Skip to content

Commit 0fe4e79

Browse files
committed
re-factor takeScreenshot
1 parent 855c95e commit 0fe4e79

31 files changed

+332
-365
lines changed

scripts/pit/its/ai.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di
66
const page = await createPage(arg.headless);
77
const sleep = ms => new Promise(r => setTimeout(r, ms));
88

9-
await waitForServerReady(page, arg.url);
9+
await waitForServerReady(page, arg.url, arg);
1010

1111
// Dismiss dev mode notification if present
1212
await dismissDevmode(page);
13-
await takeScreenshot(page, __filename, 'page-loaded');
13+
await takeScreenshot(page, arg, __filename, 'page-loaded');
1414

1515
log('Testing AI form filling functionality');
1616
await page.getByLabel('Input Text').fill('Jose Macias Pajas\t\t\tFactura / Invoice\t\t\nNIF: 111222333-S\t \t\t\tFecha / Date\t25 jul 2021\nEU VAT: FR111222333S\t\t\t\tFact.Núm / Invoice #\t12345\nIrlandeses, 7\t \t\t\t\t\n28800, AH, MAD, ES\t\t\t\t\t\n(+34) 653454512\n\t\t\t\t\t\nPara / Bill for\t\t\t\t\t\nPickup Oy\t\t\t\t\t\nFI3456\nRoad Ji 2-4\t\t\t\t\t\nHelsinki, Finland. FI.\t\t\t\t\t\n\t\t\t\t\t\nDescripción / Description\t\t\tCant. / Q.\tPrecio / Rate\tImporte / Amount\n\t\t\t\t\t\nSoftware Development Services\t\t\t1\t3.000,00 €\t3.000,00 €\n\t\t\t\t\t\nInternet Connection costs\t\t\t1\t13,89 €\t13,89 €\n\t\t\t\t\t\nHealth Insurance costs\t\t\t1\t40,16 €\t40,16 €\n\t\t\t\t\t\nTrips & Extra costs\t\t\t1\t\t50,00 €\n\t\t\t\t\t\n\t\t\t\tVAT\t50 €\n\t\t\t\tTotal\t7.439,05 €\n\t\t\t\t\t\nE-mail: aaa@example.org\t\t\t\t\t');
17-
await takeScreenshot(page, __filename, 'form-text-filled');
17+
await takeScreenshot(page, arg, __filename, 'form-text-filled');
1818

1919
await page.getByRole('button', { name: 'Fill the form' }).locator('span').nth(1).click();
20-
await takeScreenshot(page, __filename, 'fill-form-clicked');
20+
await takeScreenshot(page, arg, __filename, 'fill-form-clicked');
2121

2222
log('Waiting for AI to process and fill the form');
2323
await new Promise(async (resolve, reject) => {
2424
for (let i=1; i<10; i++) {
2525
const txt = await page.getByLabel('Order total').inputValue();
2626
if (txt == '7439.05') {
2727
log('AI form filling completed successfully');
28-
await takeScreenshot(page, __filename, 'ai-form-filled');
28+
await takeScreenshot(page, arg, __filename, 'ai-form-filled');
2929
resolve('ok');
3030
return;
3131
}
@@ -35,5 +35,5 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di
3535
});
3636

3737
log('AI test completed successfully');
38-
await closePage(page);
38+
await closePage(page, arg);
3939
})();

scripts/pit/its/basic.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di
55

66
const page = await createPage(arg.headless);
77

8-
await waitForServerReady(page, arg.url);
8+
await waitForServerReady(page, arg.url, arg);
99

1010
// Dismiss dev mode notification if present
1111
await dismissDevmode(page);
12-
await takeScreenshot(page, __filename, 'page-loaded');
12+
await takeScreenshot(page, arg, __filename, 'page-loaded');
1313

1414
log('Testing Empty (Java) view navigation');
1515
await page.locator('text=Empty (Java) >> slot').nth(1).click();
1616
await page.goto(`${arg.url}/empty-view`);
17-
await takeScreenshot(page, __filename, 'empty-view-loaded');
17+
await takeScreenshot(page, arg, __filename, 'empty-view-loaded');
1818

1919
log('Basic test completed successfully');
20-
await closePage(page);
20+
await closePage(page, arg);
2121
})();

scripts/pit/its/bookstore.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di
55

66
const page = await createPage(arg.headless);
77

8-
await waitForServerReady(page, arg.url);
8+
await waitForServerReady(page, arg.url, arg);
99

1010
// Dismiss dev mode notification if present
1111
await dismissDevmode(page);
12-
await takeScreenshot(page, __filename, 'page-loaded');
12+
await takeScreenshot(page, arg, __filename, 'page-loaded');
1313

1414
await page.getByLabel('Username').click();
1515
await page.getByLabel('Username').fill('admin');
1616
await page.getByLabel('Username').press('Tab');
1717
await page.getByLabel('Password', { exact: true }).fill('admin');
1818
await page.getByRole('button', { name: 'Log in' }).click();
19-
await takeScreenshot(page, __filename, 'logged-in');
19+
await takeScreenshot(page, arg, __filename, 'logged-in');
2020

2121
await page.getByRole('button', { name: 'New product' }).waitFor({state: "visible"});
2222
await page.getByRole('button', { name: 'New product' }).click();
2323
await page.waitForURL(`${arg.url.replace(/\/$/, '')}/Inventory/new`);
24-
await takeScreenshot(page, __filename, 'new-product-form');
24+
await takeScreenshot(page, arg, __filename, 'new-product-form');
2525

2626
await page.getByLabel('Product name', { exact: true }).waitFor({state: "visible"});
2727
await page.getByLabel('Product name', { exact: true }).click();
@@ -34,11 +34,11 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di
3434
await page.getByLabel('Romance').check();
3535
await page.getByRole('button', { name: 'Save' }).locator('div').click();
3636
await page.locator('text=foo created').textContent();
37-
await takeScreenshot(page, __filename, 'product-created');
37+
await takeScreenshot(page, arg, __filename, 'product-created');
3838

3939
await page.getByRole('link', { name: 'Admin' }).waitFor({state: "visible"});
4040
await page.getByRole('link', { name: 'Admin' }).click();
41-
await takeScreenshot(page, __filename, 'admin-page');
41+
await takeScreenshot(page, arg, __filename, 'admin-page');
4242

4343
await page.getByRole('button', { name: 'Add New Category' }).locator('span').nth(1).click();
4444
await page.locator('vaadin-text-field').first().waitFor({state: "visible"});
@@ -49,7 +49,7 @@ const { log, args, createPage, closePage, takeScreenshot, waitForServerReady, di
4949
await page.locator('input').nth(c).click()
5050
await page.locator('input').nth(c).fill('BBBB');
5151
await page.locator('input').nth(c).press('Enter');
52-
await takeScreenshot(page, __filename, 'category-added');
52+
await takeScreenshot(page, arg, __filename, 'category-added');
5353

54-
await closePage(page);
54+
await closePage(page, arg);
5555
})();

scripts/pit/its/cc-identity-management.js

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,103 +16,103 @@ const {log, err, args, createPage, closePage, takeScreenshot, waitForServerReady
1616
const anchorSelectorURL = `//vaadin-grid-cell-content[.//span[normalize-space(text())="${app}"]]//a`;
1717

1818
const page = await createPage(arg.headless, arg.ignoreHTTPSErrors);
19-
await waitForServerReady(page, arg.url);
19+
await waitForServerReady(page, arg.url, arg);
2020

2121
await expect(page.getByLabel('Email')).toBeVisible();
22-
await takeScreenshot(page, __filename, 'view-loaded');
22+
await takeScreenshot(page, arg, __filename, 'view-loaded');
2323

2424
log(`Logging in CC as ${arg.login} ${arg.pass}...\n`);
2525
await page.getByLabel('Email').fill(arg.login);
2626
await page.getByLabel('Password').fill(arg.pass);
2727
await page.getByRole('button', {name: 'Sign In'}).click()
28-
await takeScreenshot(page, __filename, 'logged-in');
28+
await takeScreenshot(page, arg, __filename, 'logged-in');
2929

3030
log(`Changing Settings for ${app}...\n`);
3131
await page.getByRole('link', { name: 'Settings', }).click();
32-
await takeScreenshot(page, __filename, 'settings');
32+
await takeScreenshot(page, arg, __filename, 'settings');
3333
const appUrl = await page.locator(anchorSelectorURL).getAttribute('href');
3434

3535
await page.locator('vaadin-select vaadin-input-container div').click();
3636
await page.getByRole('option', { name: app }).locator('div').nth(2).click();
37-
await takeScreenshot(page, __filename, 'selected-app');
37+
await takeScreenshot(page, arg, __filename, 'selected-app');
3838

3939
// When app is not running, localization button might not be enabled
4040
let pageApp;
4141
for (let attempt = 1; ; attempt++) {
4242
try {
4343
// Button is enabled after app is running, let's see
4444
await page.getByRole('link', { name: 'Identity Management' }).click();
45-
await takeScreenshot(page, __filename, `identity-link-clicked-${attempt}`);
45+
await takeScreenshot(page, arg, __filename, `identity-link-clicked-${attempt}`);
4646
break;
4747
} catch (error) {
4848
if (attempt > 3) throw(error);
4949
log(`Attempt ${attempt}: Identity Management button not enabled yet.\n`);
50-
await takeScreenshot(page, __filename, `identity-link-not-enabled-${attempt}`);
50+
await takeScreenshot(page, arg, __filename, `identity-link-not-enabled-${attempt}`);
5151
log(`Checking that ${app} installed in ${appUrl} is running ${attempt} ...\n`);
5252
pageApp = await createPage(arg.headless, arg.ignoreHTTPSErrors);
53-
await waitForServerReady(pageApp, appUrl);
54-
await takeScreenshot(pageApp, __filename, `app-${app}-running-${attempt}`);
55-
await closePage(pageApp);
53+
await waitForServerReady(pageApp, appUrl, arg);
54+
await takeScreenshot(pageApp, arg, __filename, `app-${app}-running-${attempt}`);
55+
await closePage(pageApp, arg);
5656
await page.reload();
57-
await takeScreenshot(page, __filename, `app-${app}-running-retry-${attempt}`);
57+
await takeScreenshot(page, arg, __filename, `app-${app}-running-retry-${attempt}`);
5858
}
5959
}
6060

6161
await page.waitForTimeout(2000);
6262
await page.getByRole('button', { name: 'Enable Identity Management' }).click();
63-
await takeScreenshot(page, __filename, 'identity-enabled');
63+
await takeScreenshot(page, arg, __filename, 'identity-enabled');
6464

6565
log(`Adding Role, Group and User ...\n`);
6666
await page.getByRole('link', { name: 'Roles' }).click();
6767
await page.waitForTimeout(2000);
6868
await page.getByRole('button', { name: /New/ }).click();
69-
await takeScreenshot(page, __filename, 'role-form');
69+
await takeScreenshot(page, arg, __filename, 'role-form');
7070
await page.getByLabel('Name').fill(role);
7171
await page.getByLabel('Description').fill(role);
72-
await takeScreenshot(page, __filename, 'role-filled');
72+
await takeScreenshot(page, arg, __filename, 'role-filled');
7373
await page.getByRole('contentinfo').getByRole('button', { name: 'Create' }).click();
74-
await takeScreenshot(page, __filename, 'role-created');
74+
await takeScreenshot(page, arg, __filename, 'role-created');
7575

7676
await page.getByRole('link', { name: 'Groups' }).click();
7777
await page.waitForTimeout(2000);
7878
await page.getByRole('button', { name: /New/ }).click();
79-
await takeScreenshot(page, __filename, 'group-form');
79+
await takeScreenshot(page, arg, __filename, 'group-form');
8080
await page.getByLabel('Name').fill(group);
8181
await page.locator(checkboxSelectorRole).click();
82-
await takeScreenshot(page, __filename, 'group-filled');
82+
await takeScreenshot(page, arg, __filename, 'group-filled');
8383
await page.getByRole('contentinfo').getByRole('button', { name: 'Create' }).click();
84-
await takeScreenshot(page, __filename, 'group-created');
84+
await takeScreenshot(page, arg, __filename, 'group-created');
8585

8686
await page.getByRole('link', { name: 'Users' }).click();
8787
await page.waitForTimeout(2000);
8888
await page.getByRole('button', { name: /New/ }).click();
89-
await takeScreenshot(page, __filename, 'user-form');
89+
await takeScreenshot(page, arg, __filename, 'user-form');
9090
await page.getByLabel('First Name').fill(role);
9191
await page.getByLabel('Last Name').fill('user');
9292
await page.getByLabel('E-mail Address').fill(user);
9393
await page.getByLabel('Password', { exact: true }).fill(role);
9494
await page.locator(checkboxSelectorGroup).click();
95-
await takeScreenshot(page, __filename, 'user-filled');
95+
await takeScreenshot(page, arg, __filename, 'user-filled');
9696
await page.getByRole('contentinfo').getByRole('button', { name: 'Create' }).click();
97-
await takeScreenshot(page, __filename, 'user-created');
97+
await takeScreenshot(page, arg, __filename, 'user-created');
9898

9999
log(`Logging in ${app} as ${user} ...\n`);
100100
pageApp = await createPage(arg.headless, arg.ignoreHTTPSErrors);
101-
await waitForServerReady(pageApp, appUrl);
102-
await takeScreenshot(pageApp, __filename, `app-${app}-loaded`);
101+
await waitForServerReady(pageApp, appUrl, arg);
102+
await takeScreenshot(pageApp, arg, __filename, `app-${app}-loaded`);
103103
await pageApp.getByLabel('Email').fill(user);
104104
try {
105105
await pageApp.getByLabel('Password').fill(role, { timeout: 1000 });
106106
} catch (error) {
107107
log('Password not found in the first dialog, trying the second one (cc vers 1.2+)...\n');
108108
await pageApp.getByRole('button', {name: 'Sign In'}).click()
109-
await takeScreenshot(pageApp, __filename, `app-${app}-password-dialog`);
109+
await takeScreenshot(pageApp, arg, __filename, `app-${app}-password-dialog`);
110110
}
111111
await pageApp.getByLabel('Password').fill(role);
112112
await pageApp.getByRole('button', {name: 'Sign In'}).click()
113-
await takeScreenshot(pageApp, __filename, `logged-in-${app}`);
113+
await takeScreenshot(pageApp, arg, __filename, `logged-in-${app}`);
114114
await expect(pageApp.getByRole('button', { name: 'New order' })).toBeVisible();
115-
await closePage(pageApp);
115+
await closePage(pageApp, arg);
116116

117117
log('Cleaning up...\n');
118118
try {
@@ -144,12 +144,12 @@ const {log, err, args, createPage, closePage, takeScreenshot, waitForServerReady
144144
await page.getByRole('button', { name: 'Update' }).click();
145145

146146
pageApp = await createPage(arg.headless, arg.ignoreHTTPSErrors);
147-
await waitForServerReady(pageApp, appUrl);
148-
await takeScreenshot(pageApp, __filename, 'app-after-cleanup');
147+
await waitForServerReady(pageApp, appUrl, arg);
148+
await takeScreenshot(pageApp, arg, __filename, 'app-after-cleanup');
149149
} catch (error) {
150150
err(`Error cleaning up: ${error}\n`);
151-
await takeScreenshot(page, __filename, 'error-cleaning');
151+
await takeScreenshot(page, arg, __filename, 'error-cleaning');
152152
}
153-
await closePage(page);
154-
await closePage(pageApp);
153+
await closePage(page, arg);
154+
await closePage(pageApp, arg);
155155
})();

scripts/pit/its/cc-install-apps.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,20 @@ async function installApp(app, page) {
1818

1919
await page.getByRole('listitem').filter({ hasText: 'Settings'}).click()
2020
await page.getByRole('button', {name: /Create|New/}).click()
21-
await takeScreenshot(page, __filename, `form-opened-${app}`);
21+
await takeScreenshot(page, arg, __filename, `form-opened-${app}`);
2222

2323
await page.getByLabel('Application Name', {exact: true}).fill(app)
2424
await page.getByLabel('Image', {exact: true}).fill(`${registry}/${app}:${tag}`)
2525
if (arg.secret) {
2626
await page.getByLabel('Needs Pull Secret').check();
2727
await page.getByPlaceholder('Image Pull Secret').locator('input').fill(arg.secret);
28-
await takeScreenshot(page, __filename, `form-with-secret-${app}`);
28+
await takeScreenshot(page, arg, __filename, `form-with-secret-${app}`);
2929
}
3030
await page.getByLabel('Startup Delay (secs)').fill(`${gracePeriodSecs}`);
3131

3232
if (/bakery/.test(app)) {
3333
await page.getByRole('button', {name: 'Environment Variable'}).click();
34-
await takeScreenshot(page, __filename, `env-dialog-opened-${app}`);
34+
await takeScreenshot(page, arg, __filename, `env-dialog-opened-${app}`);
3535
const envDialog = page.getByRole('dialog', { name: 'Environment Variables' });
3636
log("Setting SHOW_INFO=true")
3737
await envDialog.getByPlaceholder('Name').locator('input').fill('SHOW_INFO');
@@ -43,7 +43,7 @@ async function installApp(app, page) {
4343
await envDialog.getByPlaceholder('Value').locator('input').fill('false');
4444
await envDialog.getByLabel("Add").click();
4545
}
46-
await takeScreenshot(page, __filename, `env-dialog-filled-${app}`);
46+
await takeScreenshot(page, arg, __filename, `env-dialog-filled-${app}`);
4747
await envDialog.getByLabel("Close").click();
4848
}
4949

@@ -56,19 +56,19 @@ async function installApp(app, page) {
5656
await page.getByText('Browse').click();
5757
const fileChooser = await fileChooserPromise;
5858
await fileChooser.setFiles(cert);
59-
await takeScreenshot(page, __filename, `form-filled-${app}`);
59+
await takeScreenshot(page, arg, __filename, `form-filled-${app}`);
6060
await page.locator('.detail-layout').getByRole('button', {name: 'Deploy'}).click();
6161
} else {
6262
log(`No certificate found for ${app}\n`);
6363
run(`pwd`);
6464
run(`ls -l`);
6565
await page.getByLabel('Generate').click();
66-
await takeScreenshot(page, __filename, `form-filled-${app}`);
66+
await takeScreenshot(page, arg, __filename, `form-filled-${app}`);
6767
await page.locator('.detail-layout').getByRole('button', {name: 'Deploy'}).click();
6868
}
6969

7070
await page.getByRole('listitem').filter({ hasText: 'Settings'}).click()
71-
await takeScreenshot(page, __filename, `form-saved-${app}`);
71+
await takeScreenshot(page, arg, __filename, `form-saved-${app}`);
7272

7373
await expect(page.locator('vaadin-grid').getByText(app, { exact: true })).toBeVisible();
7474
await expect(await page.getByRole('listitem').filter({ hasText: 'Applications'})
@@ -81,37 +81,37 @@ async function installApp(app, page) {
8181
process.exit(1);
8282
}
8383
const page = await createPage(arg.headless, arg.ignoreHTTPSErrors);
84-
await waitForServerReady(page, arg.url);
85-
await takeScreenshot(page, __filename, 'view-loaded');
84+
await waitForServerReady(page, arg.url, arg);
85+
await takeScreenshot(page, arg, __filename, 'view-loaded');
8686

8787
log(`Logging in as ${arg.login} ${arg.pass}...\n`);
8888
await page.getByLabel('Email').fill(arg.login);
8989
await page.getByLabel('Password').fill(arg.pass);
9090
await page.waitForTimeout(500);
9191
await page.getByRole('button', {name: 'Sign In'}).click()
92-
await takeScreenshot(page, __filename, 'logged-in');
92+
await takeScreenshot(page, arg, __filename, 'logged-in');
9393

9494
const apps = ['cc-starter', 'bakery-cc', 'bakery'];
9595
for (const app of apps) {
9696
await installApp(app, page);
9797
}
9898

99-
await takeScreenshot(page, __filename, 'installed-apps');
99+
await takeScreenshot(page, arg, __filename, 'installed-apps');
100100
const startTime = Date.now();
101101
log(`Giving a grace period of ${gracePeriodSecs} secs to wait for ${apps.length} apps to be avalable ...\n`);
102102
await page.waitForTimeout(gracePeriodSecs * 1000);
103103
await page.reload();
104104
log(`Waiting for ${apps.length} applications to be available in dashboard ...\n`);
105-
await takeScreenshot(page, __filename, 'waiting for apps');
105+
await takeScreenshot(page, arg, __filename, 'waiting-for-apps');
106106

107107
const selector = 'vaadin-grid-cell-content span[theme="badge success"]';
108108

109109
for (let i = 0; i < apps.length; i++) {
110110
await expect(page.locator(selector).nth(i)).toBeVisible({ timeout: waitForReadyMsecs });
111111
const firstAppTime = (Date.now() - startTime) / 1000;
112-
await takeScreenshot(page, __filename, 'app-1-available');
112+
await takeScreenshot(page, arg, __filename, 'app-available');
113113
log(`application ${i + 1} is available after ${firstAppTime.toFixed(2)} seconds\n`);
114114
}
115115

116-
await closePage(page);
116+
await closePage(page, arg);
117117
})();

0 commit comments

Comments
 (0)