Skip to content

Commit

Permalink
More robust galata/UI tests (#15355)
Browse files Browse the repository at this point in the history
* Simplify/fix is open check

* Improve kernel test robustness now that tests run faster:

- do not check text immediately as the kernel needs to connect first
- quality of life: instead of using nth selector, use proper category
  selectors which helps when testing with more kernels installed
  • Loading branch information
krassowski committed Nov 28, 2023
1 parent 8405524 commit 5d7c44b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 16 deletions.
12 changes: 5 additions & 7 deletions galata/src/helpers/activity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,11 @@ export class ActivityHelper {
return activeTab === name;
} else {
const tab = await this.getTab(name);
return (
(tab &&
(await tab.evaluate((tab: Element) =>
tab.classList.contains('jp-mod-current')
))) ??
false
);
if (!tab) {
return false;
}
const classes = ((await tab.getAttribute('class')) ?? '').split(' ');
return classes.includes('jp-mod-current');
}
}

Expand Down
23 changes: 14 additions & 9 deletions galata/test/jupyterlab/kernel.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ test.describe('Kernel', () => {
page
.getByRole('tabpanel', { name: 'Launcher' })
.waitFor({ state: 'detached' }),
page.getByTitle('Python 3 (ipykernel)').nth(1).click()
page
.locator('[data-category="Notebook"][title="Python 3 (ipykernel)"]')
.click()
]);

await expect.soft(page.locator('.jp-Dialog')).toHaveCount(0);
Expand Down Expand Up @@ -112,14 +114,16 @@ test.describe('Kernel', () => {
page
.getByRole('tabpanel', { name: 'Launcher' })
.waitFor({ state: 'detached' }),
page.getByTitle('Python 3 (ipykernel)').nth(2).click()
page
.locator('[data-category="Console"][title="Python 3 (ipykernel)"]')
.click()
]);

Check failure on line 120 in galata/test/jupyterlab/kernel.test.ts

View workflow job for this annotation

GitHub Actions / Update Galata References

[jupyterlab] › test/jupyterlab/kernel.test.ts:108:9 › Kernel › Console › Should not ask kernel when creating console from launcher

1) [jupyterlab] › test/jupyterlab/kernel.test.ts:108:9 › Kernel › Console › Should not ask kernel when creating console from launcher Error: Timed out 5000ms waiting for expect(received).toHaveText(expected) Expected string: "Python 3 (ipykernel) | Idle" Received string: "" Call log: - expect.toHaveText with timeout 5000ms - waiting for getByTitle('Change kernel for Console 1') - waiting for getByTitle('Change kernel for Console 1') 118 | await expect.soft(page.locator('.jp-Dialog')).toHaveCount(0); 119 | > 120 | await expect(page.getByTitle('Change kernel for Console 1')).toHaveText( | ^ 121 | 'Python 3 (ipykernel) | Idle' 122 | ); 123 | }); at /home/runner/work/jupyterlab/jupyterlab/galata/test/jupyterlab/kernel.test.ts:120:68

Check failure on line 120 in galata/test/jupyterlab/kernel.test.ts

View workflow job for this annotation

GitHub Actions / Update Galata References

[jupyterlab] › test/jupyterlab/kernel.test.ts:108:9 › Kernel › Console › Should not ask kernel when creating console from launcher

1) [jupyterlab] › test/jupyterlab/kernel.test.ts:108:9 › Kernel › Console › Should not ask kernel when creating console from launcher Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: Timed out 5000ms waiting for expect(received).toHaveText(expected) Expected string: "Python 3 (ipykernel) | Idle" Received string: "" Call log: - expect.toHaveText with timeout 5000ms - waiting for getByTitle('Change kernel for Console 1') - waiting for getByTitle('Change kernel for Console 1') 118 | await expect.soft(page.locator('.jp-Dialog')).toHaveCount(0); 119 | > 120 | await expect(page.getByTitle('Change kernel for Console 1')).toHaveText( | ^ 121 | 'Python 3 (ipykernel) | Idle' 122 | ); 123 | }); at /home/runner/work/jupyterlab/jupyterlab/galata/test/jupyterlab/kernel.test.ts:120:68

await expect.soft(page.locator('.jp-Dialog')).toHaveCount(0);

await expect(page.getByTitle('Change kernel for Console 1')).toHaveText(
'Python 3 (ipykernel) | Idle'
);
await page
.getByTitle('Change kernel for Console 1')
.getByText('Python 3 (ipykernel) | Idle')
.waitFor();
});

test('Should ask for kernel when creating console from menu', async ({
Expand All @@ -132,9 +136,10 @@ test.describe('Kernel', () => {
.getByRole('button', { name: 'Select Kernel', exact: true })
.click();

await expect(page.getByTitle('Change kernel for Console 1')).toHaveText(
'Python 3 (ipykernel) | Idle'
);
await page
.getByTitle('Change kernel for Console 1')
.getByText('Python 3 (ipykernel) | Idle')
.waitFor();
});
});
});

0 comments on commit 5d7c44b

Please sign in to comment.