mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
add synthetics pipeline script
This commit is contained in:
parent
e02a1f70e1
commit
9a38d5a499
4 changed files with 91 additions and 8 deletions
17
.buildkite/scripts/steps/functional/synthetics.sh
Normal file
17
.buildkite/scripts/steps/functional/synthetics.sh
Normal file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source .buildkite/scripts/common/util.sh
|
||||
|
||||
.buildkite/scripts/bootstrap.sh
|
||||
.buildkite/scripts/download_build_artifacts.sh
|
||||
|
||||
export JOB=kibana-uptime-playwright
|
||||
|
||||
echo "--- Uptime @elastic/synthetics Tests"
|
||||
|
||||
cd "$XPACK_DIR"
|
||||
|
||||
checks-reporter-with-killswitch "Uptime @elastic/synthetics Tests" \
|
||||
node plugins/uptime/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" --grep="Monitor Management"
|
|
@ -10,6 +10,11 @@ import { monitorManagementPageProvider } from '../page_objects/monitor_managemen
|
|||
|
||||
journey('Monitor Management', async ({ page, params }: { page: Page; params: any }) => {
|
||||
const uptime = monitorManagementPageProvider({ page, kibanaUrl: params.kibanaUrl });
|
||||
const httpName = 'http monitor';
|
||||
const icmpName = 'icmp monitor';
|
||||
const tcpName = 'tcp monitor';
|
||||
const browserName = 'browser monitor';
|
||||
|
||||
const basicMonitorDetails = {
|
||||
name: 'Sample monitor',
|
||||
location: 'US Central',
|
||||
|
@ -37,6 +42,7 @@ journey('Monitor Management', async ({ page, params }: { page: Page; params: any
|
|||
step('create monitor http monitor', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: httpName,
|
||||
url: 'https://elastic.co',
|
||||
locations: [basicMonitorDetails.location],
|
||||
};
|
||||
|
@ -49,19 +55,27 @@ journey('Monitor Management', async ({ page, params }: { page: Page; params: any
|
|||
step('view HTTP details in monitor management UI', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: httpName,
|
||||
url: 'https://elastic.co',
|
||||
};
|
||||
await uptime.clickAddMonitor();
|
||||
await uptime.findMonitorConfiguration(monitorDetails);
|
||||
});
|
||||
|
||||
step('view results in overview page', async () => {
|
||||
await uptime.navigateToOverviewPage();
|
||||
await page.waitForSelector(`text=${httpName}`, { timeout: 60 * 1000 });
|
||||
});
|
||||
|
||||
step('delete http monitor', async () => {
|
||||
await uptime.navigateToMonitorManagement();
|
||||
await deleteMonitor();
|
||||
});
|
||||
|
||||
step('create monitor tcp monitor', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: tcpName,
|
||||
host: 'smtp.gmail.com:587',
|
||||
locations: [basicMonitorDetails.location],
|
||||
};
|
||||
|
@ -74,19 +88,27 @@ journey('Monitor Management', async ({ page, params }: { page: Page; params: any
|
|||
step('view TCP details in monitor management UI', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: tcpName,
|
||||
host: 'smtp.gmail.com:587',
|
||||
};
|
||||
await uptime.clickAddMonitor();
|
||||
await uptime.findMonitorConfiguration(monitorDetails);
|
||||
});
|
||||
|
||||
step('view results in overview page', async () => {
|
||||
await uptime.navigateToOverviewPage();
|
||||
await page.waitForSelector(`text=${tcpName}`, { timeout: 60 * 1000 });
|
||||
});
|
||||
|
||||
step('delete tcp monitor', async () => {
|
||||
await uptime.navigateToMonitorManagement();
|
||||
await deleteMonitor();
|
||||
});
|
||||
|
||||
step('create basic ICMP monitor', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: icmpName,
|
||||
host: '1.1.1.1',
|
||||
locations: [basicMonitorDetails.location],
|
||||
};
|
||||
|
@ -99,19 +121,27 @@ journey('Monitor Management', async ({ page, params }: { page: Page; params: any
|
|||
step('view ICMP details in monitor management UI', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: icmpName,
|
||||
host: '1.1.1.1',
|
||||
};
|
||||
await uptime.clickAddMonitor();
|
||||
await uptime.findMonitorConfiguration(monitorDetails);
|
||||
});
|
||||
|
||||
step('view results in overview page', async () => {
|
||||
await uptime.navigateToOverviewPage();
|
||||
await page.waitForSelector(`text=${icmpName}`, { timeout: 60 * 1000 });
|
||||
});
|
||||
|
||||
step('delete ICMP monitor', async () => {
|
||||
await uptime.navigateToMonitorManagement();
|
||||
await deleteMonitor();
|
||||
});
|
||||
|
||||
step('create basic Browser monitor', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: browserName,
|
||||
inlineScript: 'step("test step", () => {})',
|
||||
locations: [basicMonitorDetails.location],
|
||||
};
|
||||
|
@ -121,16 +151,23 @@ journey('Monitor Management', async ({ page, params }: { page: Page; params: any
|
|||
expect(isSuccessful).toBeTruthy();
|
||||
});
|
||||
|
||||
step('view ICMP details in monitor management UI', async () => {
|
||||
step('view browser details in monitor management UI', async () => {
|
||||
const monitorDetails = {
|
||||
...basicMonitorDetails,
|
||||
name: browserName,
|
||||
host: '1.1.1.1',
|
||||
};
|
||||
await uptime.clickAddMonitor();
|
||||
await uptime.findMonitorConfiguration(monitorDetails);
|
||||
});
|
||||
|
||||
step('delete ICMP monitor', async () => {
|
||||
step('view results in overview page', async () => {
|
||||
await uptime.navigateToOverviewPage();
|
||||
await page.waitForSelector(`text=${browserName} - inline`, { timeout: 60 * 1000 });
|
||||
});
|
||||
|
||||
step('delete browser monitor', async () => {
|
||||
await uptime.navigateToMonitorManagement();
|
||||
await deleteMonitor();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -6,7 +6,17 @@
|
|||
*/
|
||||
import { Page } from '@elastic/synthetics';
|
||||
|
||||
export function loginPageProvider({ page }: { page: Page; kibanaUrl: string }) {
|
||||
export function loginPageProvider({
|
||||
page,
|
||||
isRemote,
|
||||
username = 'elastic',
|
||||
password = 'changeme',
|
||||
}: {
|
||||
page: Page;
|
||||
isRemote: boolean;
|
||||
username?: string;
|
||||
password?: string;
|
||||
}) {
|
||||
return {
|
||||
async waitForLoadingToFinish() {
|
||||
while (true) {
|
||||
|
@ -15,10 +25,13 @@ export function loginPageProvider({ page }: { page: Page; kibanaUrl: string }) {
|
|||
}
|
||||
},
|
||||
async loginToKibana() {
|
||||
await page.fill('[data-test-subj=loginUsername]', 'elastic', {
|
||||
if (isRemote) {
|
||||
await page.click('text="Log in with Elasticsearch"');
|
||||
}
|
||||
await page.fill('[data-test-subj=loginUsername]', username, {
|
||||
timeout: 60 * 1000,
|
||||
});
|
||||
await page.fill('[data-test-subj=loginPassword]', 'changeme');
|
||||
await page.fill('[data-test-subj=loginPassword]', password);
|
||||
|
||||
await page.click('[data-test-subj=loginSubmit]');
|
||||
|
||||
|
|
|
@ -16,11 +16,21 @@ export function monitorManagementPageProvider({
|
|||
page: Page;
|
||||
kibanaUrl: string;
|
||||
}) {
|
||||
const monitorManagement = `${kibanaUrl}/app/uptime/manage-monitors`;
|
||||
const addMonitor = `${kibanaUrl}/app/uptime/add-monitor`;
|
||||
const remoteKibanaUrl = process.env.SYNTHETICS_KIBANA_URL;
|
||||
const remoteUsername = process.env.SYNTHETICS_KIBANA_USERNAME;
|
||||
const remotePassword = process.env.SYNTHETICS_KIBANA_PASSWORD;
|
||||
const basePath = remoteKibanaUrl || kibanaUrl;
|
||||
const monitorManagement = `${basePath}/app/uptime/manage-monitors`;
|
||||
const addMonitor = `${basePath}/app/uptime/add-monitor`;
|
||||
const overview = `${basePath}/app/uptime`;
|
||||
|
||||
return {
|
||||
...loginPageProvider({ page, kibanaUrl }),
|
||||
...loginPageProvider({
|
||||
page,
|
||||
isRemote: !!remoteKibanaUrl,
|
||||
username: remoteUsername,
|
||||
password: remotePassword,
|
||||
}),
|
||||
...utilsPageProvider({ page }),
|
||||
|
||||
async navigateToMonitorManagement() {
|
||||
|
@ -35,6 +45,12 @@ export function monitorManagementPageProvider({
|
|||
});
|
||||
},
|
||||
|
||||
async navigateToOverviewPage() {
|
||||
await page.goto(overview, {
|
||||
waitUntil: 'networkidle',
|
||||
});
|
||||
},
|
||||
|
||||
async clickAddMonitor() {
|
||||
await page.click('text=Add monitor');
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue