|
1 | 1 | import { test } from '@jupyterlab/galata';
|
2 | 2 | import { expect } from '@playwright/test';
|
3 | 3 |
|
4 |
| -test.describe('Terminal Tests', () => { |
5 |
| - test.describe('Open Terminal', () => { |
6 |
| - test.beforeEach(async ({ page }) => { |
7 |
| - await page.menu.clickMenuItem('File>New>Terminal'); |
8 |
| - await page.sidebar.openTab('jp-running-sessions'); |
9 |
| - await page.sidebar.getTab('jp-running-sessions'); |
10 |
| - const content = await page.sidebar.getContentPanel('left'); |
11 |
| - await page.waitForSelector( |
12 |
| - 'span.jp-RunningSessions-itemLabel:has-text("terminals")' |
13 |
| - ); |
14 |
| - await ( |
15 |
| - await content.$( |
16 |
| - 'span.jp-RunningSessions-itemLabel:has-text("terminals")' |
17 |
| - ) |
18 |
| - ).click(); |
| 4 | +const TERMINAL_SELECTOR = '.jp-Terminal'; |
| 5 | +const TERMINAL_THEME_ATTRIBUTE = 'data-term-theme'; |
| 6 | + |
| 7 | +test.describe('Terminal', () => { |
| 8 | + test.beforeEach(async ({ page }) => { |
| 9 | + await page.menu.clickMenuItem('File>New>Terminal'); |
| 10 | + await page.waitForSelector(TERMINAL_SELECTOR); |
| 11 | + }); |
19 | 12 |
|
20 |
| - await page.waitForSelector('div.xterm-viewport'); |
| 13 | + test.describe('Open', () => { |
| 14 | + test('should appear in the sidebar', async ({ page }) => { |
| 15 | + await page.sidebar.openTab('jp-running-sessions'); |
| 16 | + await expect(page.locator('text=terminals/1')).toBeVisible(); |
21 | 17 | });
|
| 18 | + }); |
22 | 19 |
|
| 20 | + test.describe('Theme', () => { |
23 | 21 | test('Light theme terminal inherit', async ({ page }) => {
|
24 |
| - expect(await page.screenshot()).toMatchSnapshot('light-term-inherit.png'); |
| 22 | + const terminal = page.locator(TERMINAL_SELECTOR); |
| 23 | + await terminal.waitFor(); |
| 24 | + await expect(terminal).toHaveAttribute( |
| 25 | + TERMINAL_THEME_ATTRIBUTE, |
| 26 | + 'inherit' |
| 27 | + ); |
| 28 | + expect(await terminal.screenshot()).toMatchSnapshot( |
| 29 | + 'light-term-inherit.png' |
| 30 | + ); |
25 | 31 | });
|
26 | 32 |
|
27 | 33 | test('Light theme terminal light', async ({ page }) => {
|
| 34 | + const terminal = page.locator(TERMINAL_SELECTOR); |
| 35 | + await terminal.waitFor(); |
28 | 36 | await page.menu.clickMenuItem('Settings>Terminal Theme>Light');
|
29 |
| - await page.menu.closeAll(); |
30 |
| - expect(await page.screenshot()).toMatchSnapshot('light-term-light.png'); |
| 37 | + await expect(terminal).toHaveAttribute(TERMINAL_THEME_ATTRIBUTE, 'light'); |
| 38 | + expect(await terminal.screenshot()).toMatchSnapshot( |
| 39 | + 'light-term-light.png' |
| 40 | + ); |
31 | 41 | });
|
32 | 42 |
|
33 | 43 | test('Light theme terminal dark', async ({ page }) => {
|
| 44 | + const terminal = page.locator(TERMINAL_SELECTOR); |
| 45 | + await terminal.waitFor(); |
34 | 46 | await page.menu.clickMenuItem('Settings>Terminal Theme>Dark');
|
35 |
| - await page.menu.closeAll(); |
36 |
| - expect(await page.screenshot()).toMatchSnapshot('light-term-dark.png'); |
| 47 | + await expect(terminal).toHaveAttribute(TERMINAL_THEME_ATTRIBUTE, 'dark'); |
| 48 | + expect(await terminal.screenshot()).toMatchSnapshot( |
| 49 | + 'light-term-dark.png' |
| 50 | + ); |
37 | 51 | });
|
38 | 52 |
|
39 | 53 | test('Dark theme terminal inherit', async ({ page }) => {
|
| 54 | + const terminal = page.locator(TERMINAL_SELECTOR); |
| 55 | + await terminal.waitFor(); |
40 | 56 | await page.theme.setDarkTheme();
|
41 |
| - await page.menu.closeAll(); |
42 |
| - expect(await page.screenshot()).toMatchSnapshot('dark-term-inherit.png'); |
| 57 | + await expect(terminal).toHaveAttribute( |
| 58 | + TERMINAL_THEME_ATTRIBUTE, |
| 59 | + 'inherit' |
| 60 | + ); |
| 61 | + expect(await terminal.screenshot()).toMatchSnapshot( |
| 62 | + 'dark-term-inherit.png' |
| 63 | + ); |
43 | 64 | });
|
44 | 65 |
|
45 | 66 | test('Dark theme terminal light', async ({ page }) => {
|
| 67 | + const terminal = page.locator(TERMINAL_SELECTOR); |
| 68 | + await terminal.waitFor(); |
46 | 69 | await page.theme.setDarkTheme();
|
47 | 70 | await page.menu.clickMenuItem('Settings>Terminal Theme>Light');
|
48 |
| - await page.menu.closeAll(); |
49 |
| - expect(await page.screenshot()).toMatchSnapshot('dark-term-light.png'); |
| 71 | + await expect(terminal).toHaveAttribute(TERMINAL_THEME_ATTRIBUTE, 'light'); |
| 72 | + expect(await terminal.screenshot()).toMatchSnapshot( |
| 73 | + 'dark-term-light.png' |
| 74 | + ); |
50 | 75 | });
|
51 | 76 |
|
52 | 77 | test('Dark theme terminal dark', async ({ page }) => {
|
| 78 | + const terminal = page.locator(TERMINAL_SELECTOR); |
| 79 | + await terminal.waitFor(); |
53 | 80 | await page.theme.setDarkTheme();
|
54 | 81 | await page.menu.clickMenuItem('Settings>Terminal Theme>Dark');
|
55 |
| - await page.menu.closeAll(); |
56 |
| - expect(await page.screenshot()).toMatchSnapshot('dark-term-dark.png'); |
| 82 | + await expect(terminal).toHaveAttribute(TERMINAL_THEME_ATTRIBUTE, 'dark'); |
| 83 | + expect(await terminal.screenshot()).toMatchSnapshot('dark-term-dark.png'); |
57 | 84 | });
|
58 | 85 | });
|
59 | 86 | });
|
0 commit comments