|
5 | 5 | * |
6 | 6 | * Copyright Oxide Computer Company |
7 | 7 | */ |
8 | | -import { test } from '@playwright/test' |
| 8 | +import { expect, test } from '@playwright/test' |
9 | 9 |
|
10 | | -import { clickRowAction, expectNotVisible, expectRowVisible, expectVisible } from './utils' |
| 10 | +import { clickRowAction, expectRowVisible } from './utils' |
11 | 11 |
|
12 | 12 | test('SSH keys', async ({ page }) => { |
13 | 13 | await page.goto('/settings/ssh-keys') |
14 | 14 |
|
15 | 15 | // see table with the ssh key |
16 | | - await expectVisible(page, [ |
17 | | - 'role=heading[name*="SSH Keys"]', |
18 | | - 'role=cell[name="m1-macbook-pro"]', |
19 | | - 'role=cell[name="mac-mini"]', |
20 | | - ]) |
| 16 | + await expect(page.getByRole('heading', { name: 'SSH Keys' })).toBeVisible() |
| 17 | + await expect(page.getByRole('cell', { name: 'm1-macbook-pro' })).toBeVisible() |
| 18 | + await expect(page.getByRole('cell', { name: 'mac-mini' })).toBeVisible() |
| 19 | + |
| 20 | + // click name to open side modal |
| 21 | + await page.getByRole('link', { name: 'm1-macbook-pro' }).click() |
| 22 | + |
| 23 | + // verify side modal content |
| 24 | + const modal = page.getByRole('dialog', { name: 'View SSH key' }) |
| 25 | + await expect(modal).toBeVisible() |
| 26 | + await expect(modal.getByRole('heading', { name: 'm1-macbook-pro' })).toBeVisible() |
| 27 | + |
| 28 | + const propertiesTable = modal.locator('.properties-table') |
| 29 | + await expect(propertiesTable.getByText('ID')).toBeVisible() |
| 30 | + await expect(propertiesTable.getByText('Created')).toBeVisible() |
| 31 | + await expect(propertiesTable.getByText('Updated')).toBeVisible() |
| 32 | + |
| 33 | + // verify form fields are present and disabled |
| 34 | + await expect(modal.getByRole('textbox', { name: 'Name' })).toBeDisabled() |
| 35 | + await expect(modal.getByRole('textbox', { name: 'Description' })).toBeDisabled() |
| 36 | + await expect(modal.getByRole('textbox', { name: 'Public key' })).toBeDisabled() |
| 37 | + |
| 38 | + // close modal |
| 39 | + await modal.getByRole('button', { name: 'Close' }).click() |
| 40 | + await expect(modal).toBeHidden() |
21 | 41 |
|
22 | 42 | // delete the two ssh keys |
23 | 43 | await clickRowAction(page, 'm1-macbook-pro', 'Delete') |
24 | 44 | await page.getByRole('button', { name: 'Confirm' }).click() |
25 | 45 |
|
26 | | - await expectNotVisible(page, ['role=cell[name="m1-macbook-pro"]']) |
| 46 | + await expect(page.getByRole('cell', { name: 'm1-macbook-pro' })).toBeHidden() |
27 | 47 |
|
28 | 48 | await clickRowAction(page, 'mac-mini', 'Delete') |
29 | 49 | await page.getByRole('button', { name: 'Confirm' }).click() |
30 | 50 |
|
31 | 51 | // should show empty state |
32 | | - await expectVisible(page, ['text="No SSH keys"']) |
| 52 | + await expect(page.getByText('No SSH keys')).toBeVisible() |
33 | 53 |
|
34 | 54 | // there are two of these, but it doesn't matter which one we click |
35 | | - await page.click('role=button[name="Add SSH key"]') |
| 55 | + await page.getByRole('button', { name: 'Add SSH key' }).click() |
36 | 56 |
|
37 | 57 | // fill out form and submit |
38 | | - await page.fill('role=textbox[name="Name"]', 'my-key') |
39 | | - await page.fill('role=textbox[name="Description"]', 'definitely a key') |
40 | | - await page.fill('role=textbox[name="Public key"]', 'key contents') |
| 58 | + await page.getByRole('textbox', { name: 'Name' }).fill('my-key') |
| 59 | + await page.getByRole('textbox', { name: 'Description' }).fill('definitely a key') |
| 60 | + await page.getByRole('textbox', { name: 'Public key' }).fill('key contents') |
41 | 61 | await page.getByRole('dialog').getByRole('button', { name: 'Add SSH key' }).click() |
42 | 62 |
|
43 | 63 | // it's there in the table |
44 | | - await expectNotVisible(page, ['text="No SSH keys"']) |
| 64 | + await expect(page.getByText('No SSH keys')).toBeHidden() |
45 | 65 | const table = page.getByRole('table') |
46 | 66 | await expectRowVisible(table, { name: 'my-key', description: 'definitely a key' }) |
47 | 67 |
|
48 | 68 | // now delete it |
49 | | - await page.click('role=button[name="Row actions"]') |
50 | | - await page.click('role=menuitem[name="Delete"]') |
| 69 | + await page.getByRole('button', { name: 'Row actions' }).click() |
| 70 | + await page.getByRole('menuitem', { name: 'Delete' }).click() |
51 | 71 | await page.getByRole('button', { name: 'Confirm' }).click() |
52 | 72 |
|
53 | | - await expectNotVisible(page, ['role=cell[name="my-key"]']) |
54 | | - await expectVisible(page, ['text="No SSH keys"']) |
| 73 | + await expect(page.getByRole('cell', { name: 'my-key' })).toBeHidden() |
| 74 | + await expect(page.getByText('No SSH keys')).toBeVisible() |
55 | 75 | }) |
0 commit comments