Skip to content

Commit 7a750ab

Browse files
committed
migrate scripts/pit/its/hello.js to use test-utils
1 parent 7ce2e41 commit 7a750ab

File tree

1 file changed

+48
-70
lines changed

1 file changed

+48
-70
lines changed

scripts/pit/its/hello.js

Lines changed: 48 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,60 @@
1-
const { chromium, webkit } = require('playwright');
2-
const screenshots = "screenshots.out"
1+
const { expect } = require('@playwright/test');
2+
const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, dismissDevmode } = require('./test-utils');
33

4-
let headless = false, host = 'localhost', port = '8080', mode = 'prod', name;
5-
process.argv.forEach(a => {
6-
if (/^--headless/.test(a)) {
7-
headless = true;
8-
} else if (/^--port=/.test(a)) {
9-
port = a.split('=')[1];
10-
} else if (/^--mode=/.test(a)) {
11-
mode = a.split('=')[1];
12-
} else if (/^--name=/.test(a)) {
13-
name = a.split('=')[1];
14-
}
15-
});
4+
(async () => {
5+
const arg = args();
166

17-
let sscount = 0;
18-
async function takeScreenshot(page, name) {
19-
const path = `${screenshots}/${++sscount}-${name}-${mode}.png`;
20-
await page.screenshot({ path });
21-
log(`Screenshot taken: ${path}\n`);
22-
}
23-
const log = s => process.stderr.write(`\x1b[1m=> TEST: \x1b[0;33m${s}\x1b[0m`);
7+
const page = await createPage(arg.headless);
248

25-
(async () => {
26-
const browser = await chromium.launch({
27-
headless: headless,
28-
chromiumSandbox: false
29-
});
30-
const context = await browser.newContext();
31-
const text = 'Greet';
9+
await waitForServerReady(page, arg.url);
10+
11+
// Dismiss dev mode notification if present
12+
await dismissDevmode(page);
13+
14+
const text = 'Greet';
15+
16+
// Wait for vaadin ready
17+
await page.waitForSelector('#outlet > * > *:not(style):not(script)');
3218

33-
// Open new page
34-
const page = await context.newPage();
35-
page.on('console', msg => console.log("> CONSOLE:", (msg.text() + ' - ' + msg.location().url).replace(/\s+/g, ' ')));
36-
page.on('pageerror', err => console.log("> PAGEERROR:", ('' + err).replace(/\s+/g, ' ')));
19+
await takeScreenshot(page, __filename, 'initial-view');
3720

38-
// Go to http://localhost:8080/
39-
await page.goto(`http://${host}:${port}/`);
40-
// Wait for vaadin ready
41-
await page.waitForSelector('#outlet > * > *:not(style):not(script)');
21+
// Click input[type="text"]
22+
try {
23+
await page.locator('input[type="text"]').click({timeout:10000});
24+
} catch (error) {
25+
// skeleton-starter-flow-cdi wildfly:run sometimes does not load the page correctly
26+
log(`Error looking for input[type="text"], sleeping and reloading page`);
27+
await page.reload();
28+
await page.waitForLoadState('load')
29+
await page.waitForTimeout(10000);
30+
await takeScreenshot(page, __filename, 'initial-view-after-reload');
31+
await page.locator('input[type="text"]').click({timeout:60000});
32+
}
4233

43-
await takeScreenshot(page, 'initial-view');
44-
// Click input[type="text"]
45-
try {
46-
await page.locator('input[type="text"]').click({timeout:10000});
47-
} catch (error) {
48-
// skeleton-starter-flow-cdi wildfly:run sometimes does not load the page correctly
49-
log(`Error looking for input[type="text"], sleeping and reloading page\n`);
50-
await page.reload();
51-
await page.waitForLoadState('load')
52-
await page.waitForTimeout(10000);
53-
await takeScreenshot(page, 'initial-view-after-reload');
54-
await page.locator('input[type="text"]').click({timeout:60000});
55-
}
34+
// Fill input[type="text"]
35+
await page.locator('input[type="text"]').fill(text);
36+
await takeScreenshot(page, __filename, 'input-filled');
5637

57-
// Fill input[type="text"]
58-
await page.locator('input[type="text"]').fill(text);
38+
// Click text=Say hello
39+
await page.locator('vaadin-button').click();
40+
await takeScreenshot(page, __filename, 'button-clicked');
5941

60-
// Click text=Say hello
61-
await page.locator('vaadin-button').click();
62-
await takeScreenshot(page, 'button-clicked');
42+
// Look for the text, sometimes rendered in an alert, sometimes in the dom
43+
let m;
44+
try {
45+
m = await page.getByRole('alert').nth(1).innerText({timeout:500});
46+
log(`Found ${text} in an 'alert' role: ${m}`);
47+
} catch (e) {
48+
log(`Not Found ${text} in an 'alert' role, looking in DOM`);
49+
m = await page.locator(`text=/${text}/`).innerText({timeout:5000});
50+
}
6351

52+
if (! new RegExp(text).test(m)) {
53+
throw new Error(`${text} text not found in ${m}`);
54+
}
6455

65-
// Look for the text, sometimes rendered in an alert, sometimes in the dom
66-
let m;
67-
try {
68-
m = await page.getByRole('alert').nth(1).innerText({timeout:500});
69-
} catch (e) {
70-
console.log(`Not Found ${text} in an 'alert' role`);
71-
m = await page.locator(`text=/${text}/`).innerText({timeout:5000});
72-
}
73-
if (! new RegExp(text).test(m)) {
74-
throw new Error(`${text} text not found in ${m}`);
75-
}
76-
console.log(`Found ${m} text in the dom`);
56+
log(`Found ${m} text in the dom`);
57+
await takeScreenshot(page, __filename, 'greeting-found');
7758

78-
// Close everything
79-
// ---------------------
80-
await context.close();
81-
await browser.close();
59+
await closePage(page);
8260
})();

0 commit comments

Comments
 (0)