|
14 | 14 | * CSS frameworks, or making broad styling changes. |
15 | 15 | */ |
16 | 16 |
|
17 | | -import { expect, test } from './utils' |
| 17 | +import { expect, test } from '../e2e/utils' |
| 18 | + |
| 19 | +// set a fixed time to avoid diffs due to irrelevant time differences |
| 20 | +test.beforeEach(async ({ page }) => { |
| 21 | + await page.clock.setFixedTime(new Date('2025-10-23T12:34:56.000Z')) |
| 22 | +}) |
18 | 23 |
|
19 | 24 | test.describe('Visual Regression', { tag: '@visual' }, () => { |
20 | 25 | test('projects list', async ({ page }) => { |
21 | 26 | await page.goto('/projects') |
22 | | - await page.getByRole('heading', { name: 'Projects' }).waitFor() |
| 27 | + await expect(page.getByRole('heading', { name: 'Projects' })).toBeVisible() |
23 | 28 | await expect(page).toHaveScreenshot('projects-list.png', { fullPage: true }) |
24 | 29 | }) |
25 | 30 |
|
26 | 31 | test('instances list', async ({ page }) => { |
27 | 32 | await page.goto('/projects/mock-project/instances') |
28 | | - await page.getByRole('heading', { name: 'Instances' }).waitFor() |
| 33 | + await expect(page.getByRole('heading', { name: 'Instances' })).toBeVisible() |
29 | 34 | await expect(page).toHaveScreenshot('instances-list.png', { fullPage: true }) |
30 | 35 | }) |
31 | 36 |
|
32 | 37 | test('instance detail', async ({ page }) => { |
33 | 38 | await page.goto('/projects/mock-project/instances/db1') |
34 | | - await page.getByRole('heading', { name: 'db1' }).waitFor() |
| 39 | + await expect(page.getByRole('heading', { name: 'db1' })).toBeVisible() |
35 | 40 | await expect(page).toHaveScreenshot('instance-detail.png', { fullPage: true }) |
36 | 41 | }) |
37 | 42 |
|
38 | 43 | test('create disk', async ({ page }) => { |
39 | 44 | await page.goto('/projects/mock-project/disks-new') |
40 | | - await page.getByRole('heading', { name: 'Create disk' }).waitFor() |
| 45 | + await expect(page.getByRole('heading', { name: 'Create disk' })).toBeVisible() |
41 | 46 | await expect(page).toHaveScreenshot('disks-new.png', { fullPage: true }) |
42 | 47 | }) |
43 | 48 |
|
44 | 49 | test('disks list', async ({ page }) => { |
45 | 50 | await page.goto('/projects/mock-project/disks') |
46 | | - await page.getByRole('heading', { name: 'Disks' }).waitFor() |
| 51 | + await expect(page.getByRole('heading', { name: 'Disks' })).toBeVisible() |
47 | 52 | await expect(page).toHaveScreenshot('disks-list.png', { fullPage: true }) |
48 | 53 | }) |
49 | 54 |
|
50 | 55 | test('vpcs list', async ({ page }) => { |
51 | 56 | await page.goto('/projects/mock-project/vpcs') |
52 | | - await page.getByRole('heading', { name: 'VPCs' }).waitFor() |
| 57 | + await expect(page.getByRole('heading', { name: 'VPCs' })).toBeVisible() |
53 | 58 | await expect(page).toHaveScreenshot('vpcs-list.png', { fullPage: true }) |
54 | 59 | }) |
55 | 60 |
|
56 | 61 | test('snapshots list', async ({ page }) => { |
57 | 62 | await page.goto('/projects/mock-project/snapshots') |
58 | | - await page.getByRole('heading', { name: 'Snapshots' }).waitFor() |
| 63 | + await expect(page.getByRole('heading', { name: 'Snapshots' })).toBeVisible() |
59 | 64 | await expect(page).toHaveScreenshot('snapshots-list.png', { fullPage: true }) |
60 | 65 | }) |
61 | 66 |
|
62 | 67 | test('images list', async ({ page }) => { |
63 | 68 | await page.goto('/projects/mock-project/images') |
64 | | - await page.getByRole('heading', { name: 'Images' }).waitFor() |
| 69 | + await expect(page.getByRole('heading', { name: 'Images' })).toBeVisible() |
65 | 70 | await expect(page).toHaveScreenshot('images-list.png', { fullPage: true }) |
66 | 71 | }) |
67 | 72 |
|
68 | 73 | test('silo images list', async ({ page }) => { |
69 | 74 | await page.goto('/images') |
70 | | - await page.getByRole('heading', { name: 'Silo Images' }).waitFor() |
| 75 | + await expect(page.getByRole('heading', { name: 'Silo Images' })).toBeVisible() |
71 | 76 | await expect(page).toHaveScreenshot('silo-images.png', { fullPage: true }) |
72 | 77 | await page.click('role=button[name="Promote image"]') |
73 | 78 | await expect(page).toHaveScreenshot('silo-images-promote.png', { fullPage: true }) |
74 | 79 | }) |
75 | 80 |
|
76 | 81 | test('silo image', async ({ page }) => { |
77 | 82 | await page.goto('/images/arch-2022-06-01/edit') |
78 | | - await page.getByRole('heading', { name: 'Silo image', exact: true }).waitFor() |
| 83 | + await expect( |
| 84 | + page.getByRole('heading', { name: 'Silo image', exact: true }) |
| 85 | + ).toBeVisible() |
79 | 86 | await expect(page).toHaveScreenshot('silo-image.png', { fullPage: true }) |
80 | 87 | }) |
81 | 88 |
|
82 | 89 | test('system utilization', async ({ page }) => { |
83 | 90 | await page.goto('/utilization') |
84 | | - await page.getByRole('heading', { name: 'Utilization' }).waitFor() |
| 91 | + await expect(page.getByRole('heading', { name: 'Utilization' })).toBeVisible() |
85 | 92 | await expect(page).toHaveScreenshot('system-utilization.png', { fullPage: true }) |
86 | 93 | }) |
87 | 94 |
|
88 | 95 | test('system silos list', async ({ page }) => { |
89 | 96 | await page.goto('/system/silos') |
90 | | - await page.getByRole('heading', { name: 'Silos' }).waitFor() |
| 97 | + await expect(page.getByRole('heading', { name: 'Silos' })).toBeVisible() |
91 | 98 | await expect(page).toHaveScreenshot('system-silos.png', { fullPage: true }) |
92 | 99 | }) |
93 | 100 |
|
94 | 101 | test('system networking ip pools', async ({ page }) => { |
95 | 102 | await page.goto('/system/networking/ip-pools') |
96 | | - await page.getByRole('heading', { name: 'IP Pools' }).waitFor() |
| 103 | + await expect(page.getByRole('heading', { name: 'IP Pools' })).toBeVisible() |
97 | 104 | await expect(page).toHaveScreenshot('system-ip-pools.png', { fullPage: true }) |
98 | 105 | }) |
99 | 106 |
|
100 | 107 | test('settings profile', async ({ page }) => { |
101 | 108 | await page.goto('/settings/profile') |
102 | | - await page.getByRole('heading', { name: 'Profile' }).waitFor() |
| 109 | + await expect(page.getByRole('heading', { name: 'Profile' })).toBeVisible() |
103 | 110 | await expect(page).toHaveScreenshot('settings-profile.png', { fullPage: true }) |
104 | 111 | }) |
105 | 112 |
|
|
0 commit comments