@politiet/sheriff-web-components 2.7.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +80 -8
- package/dist/mixins/sds-dialog-target-mixin.d.ts.map +1 -1
- package/dist/mixins/sds-dialog-target-mixin.js +4 -2
- package/dist/mixins/sds-dialog-target-mixin.js.map +1 -1
- package/dist/mixins/sds-form-control-mixin.d.ts +1 -0
- package/dist/mixins/sds-form-control-mixin.d.ts.map +1 -1
- package/dist/mixins/sds-form-control-mixin.js +7 -0
- package/dist/mixins/sds-form-control-mixin.js.map +1 -1
- package/dist/mixins/sds-popover-target-mixin.d.ts +1 -1
- package/dist/mixins/sds-popover-target-mixin.d.ts.map +1 -1
- package/dist/mixins/sds-popover-target-mixin.js.map +1 -1
- package/dist/sds-button/sds-button.component.d.ts +3 -1
- package/dist/sds-button/sds-button.component.d.ts.map +1 -1
- package/dist/sds-button/sds-button.component.js +5 -1
- package/dist/sds-button/sds-button.component.js.map +1 -1
- package/dist/sds-button/sds-button.styles.d.ts.map +1 -1
- package/dist/sds-button/sds-button.styles.js +87 -3
- package/dist/sds-button/sds-button.styles.js.map +1 -1
- package/dist/sds-card/sds-card.styles.d.ts.map +1 -1
- package/dist/sds-card/sds-card.styles.js +9 -3
- package/dist/sds-card/sds-card.styles.js.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.styles.d.ts.map +1 -1
- package/dist/sds-checkbox/sds-checkbox.styles.js +4 -2
- package/dist/sds-checkbox/sds-checkbox.styles.js.map +1 -1
- package/dist/sds-details/sds-details.styles.js +6 -6
- package/dist/sds-details/sds-details.styles.js.map +1 -1
- package/dist/sds-dialog/sds-dialog.styles.d.ts.map +1 -1
- package/dist/sds-dialog/sds-dialog.styles.js +8 -2
- package/dist/sds-dialog/sds-dialog.styles.js.map +1 -1
- package/dist/sds-popover/assets/popover-styles.d.ts.map +1 -1
- package/dist/sds-popover/assets/popover-styles.js +1 -1
- package/dist/sds-popover/assets/popover-styles.js.map +1 -1
- package/dist/sds-radio/sds-radio.styles.d.ts.map +1 -1
- package/dist/sds-radio/sds-radio.styles.js +10 -3
- package/dist/sds-radio/sds-radio.styles.js.map +1 -1
- package/dist/sds-select/sds-select.component.d.ts +1 -1
- package/dist/sds-select/sds-select.component.d.ts.map +1 -1
- package/dist/sds-select/sds-select.component.js +2 -1
- package/dist/sds-select/sds-select.component.js.map +1 -1
- package/dist/sds-select/sds-select.styles.d.ts.map +1 -1
- package/dist/sds-select/sds-select.styles.js +3 -2
- package/dist/sds-select/sds-select.styles.js.map +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.styles.d.ts.map +1 -1
- package/dist/sds-stepper-step/sds-stepper-step.styles.js +4 -3
- package/dist/sds-stepper-step/sds-stepper-step.styles.js.map +1 -1
- package/dist/sds-switch/sds-switch.styles.js +6 -6
- package/dist/sds-switch/sds-switch.styles.js.map +1 -1
- package/dist/sds-text/sds-text.styles.d.ts.map +1 -1
- package/dist/sds-text/sds-text.styles.js +2 -1
- package/dist/sds-text/sds-text.styles.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.d.ts +1 -1
- package/dist/sds-textarea/sds-textarea.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.js +6 -1
- package/dist/sds-textarea/sds-textarea.js.map +1 -1
- package/dist/sds-textarea/sds-textarea.styles.d.ts.map +1 -1
- package/dist/sds-textarea/sds-textarea.styles.js +11 -3
- package/dist/sds-textarea/sds-textarea.styles.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.d.ts +5 -1
- package/dist/sds-textfield/sds-textfield.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.js +27 -10
- package/dist/sds-textfield/sds-textfield.js.map +1 -1
- package/dist/sds-textfield/sds-textfield.styles.d.ts.map +1 -1
- package/dist/sds-textfield/sds-textfield.styles.js +4 -3
- package/dist/sds-textfield/sds-textfield.styles.js.map +1 -1
- package/dist/shared/assets/positioning.js +1 -1
- package/dist/sheriff-web-components.js +294 -175
- package/package.json +2 -2
- package/web-types.json +102 -10
- package/dist/playwright-util/custom-matchers.d.ts +0 -7
- package/dist/playwright-util/custom-matchers.d.ts.map +0 -1
- package/dist/playwright-util/custom-matchers.js +0 -21
- package/dist/playwright-util/custom-matchers.js.map +0 -1
- package/dist/playwright-util/form.d.ts +0 -3
- package/dist/playwright-util/form.d.ts.map +0 -1
- package/dist/playwright-util/form.js +0 -44
- package/dist/playwright-util/form.js.map +0 -1
- package/dist/sds-button/sds-button.spec.d.ts +0 -2
- package/dist/sds-button/sds-button.spec.d.ts.map +0 -1
- package/dist/sds-button/sds-button.spec.js +0 -182
- package/dist/sds-button/sds-button.spec.js.map +0 -1
- package/dist/sds-checkbox/sds-checkbox.spec.d.ts +0 -2
- package/dist/sds-checkbox/sds-checkbox.spec.d.ts.map +0 -1
- package/dist/sds-checkbox/sds-checkbox.spec.js +0 -74
- package/dist/sds-checkbox/sds-checkbox.spec.js.map +0 -1
- package/dist/sds-dialog/sds-dialog.spec.d.ts +0 -2
- package/dist/sds-dialog/sds-dialog.spec.d.ts.map +0 -1
- package/dist/sds-dialog/sds-dialog.spec.js +0 -64
- package/dist/sds-dialog/sds-dialog.spec.js.map +0 -1
- package/dist/sds-radio/sds-radio.spec.d.ts +0 -2
- package/dist/sds-radio/sds-radio.spec.d.ts.map +0 -1
- package/dist/sds-radio/sds-radio.spec.js +0 -71
- package/dist/sds-radio/sds-radio.spec.js.map +0 -1
- package/dist/sds-textfield/sds-textfield.spec.d.ts +0 -2
- package/dist/sds-textfield/sds-textfield.spec.d.ts.map +0 -1
- package/dist/sds-textfield/sds-textfield.spec.js +0 -137
- package/dist/sds-textfield/sds-textfield.spec.js.map +0 -1
- package/dist/sds-tooltip/sds-tooltip.spec.d.ts +0 -2
- package/dist/sds-tooltip/sds-tooltip.spec.d.ts.map +0 -1
- package/dist/sds-tooltip/sds-tooltip.spec.js +0 -35
- package/dist/sds-tooltip/sds-tooltip.spec.js.map +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { test, expect } from '@playwright/test';
|
|
2
|
-
test.describe('dialog-component', () => {
|
|
3
|
-
test.beforeEach(async ({ page }) => {
|
|
4
|
-
await page.goto('iframe.html?viewMode=docs&id=test-dialog--docs');
|
|
5
|
-
await page.evaluate(async () => {
|
|
6
|
-
await customElements.whenDefined('sds-dialog');
|
|
7
|
-
});
|
|
8
|
-
});
|
|
9
|
-
test.describe('commandfor', () => {
|
|
10
|
-
test('sets aria-haspopup on the trigger button', async ({ page }) => {
|
|
11
|
-
const innerButton = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]').locator('button');
|
|
12
|
-
await expect(innerButton).toHaveAttribute('aria-haspopup', 'dialog');
|
|
13
|
-
});
|
|
14
|
-
test('sets aria-controls on the trigger button', async ({ page }) => {
|
|
15
|
-
const innerButton = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]').locator('button');
|
|
16
|
-
await expect(innerButton).toHaveAttribute('aria-controls', 'dialog-example');
|
|
17
|
-
});
|
|
18
|
-
test('aria-expanded is false before opening', async ({ page }) => {
|
|
19
|
-
const innerButton = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]').locator('button');
|
|
20
|
-
await expect(innerButton).toHaveAttribute('aria-expanded', 'false');
|
|
21
|
-
});
|
|
22
|
-
test('clicking the trigger opens the dialog', async ({ page }) => {
|
|
23
|
-
const trigger = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]');
|
|
24
|
-
const dialog = page.locator('sds-dialog#dialog-example');
|
|
25
|
-
await trigger.click();
|
|
26
|
-
await expect(dialog).toHaveAttribute('open');
|
|
27
|
-
});
|
|
28
|
-
test('aria-expanded is true when dialog is open', async ({ page }) => {
|
|
29
|
-
const trigger = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]');
|
|
30
|
-
const innerButton = trigger.locator('button');
|
|
31
|
-
await trigger.click();
|
|
32
|
-
await expect(innerButton).toHaveAttribute('aria-expanded', 'true');
|
|
33
|
-
});
|
|
34
|
-
test('closing via command="close" resets aria-expanded', async ({ page }) => {
|
|
35
|
-
const trigger = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]');
|
|
36
|
-
const innerButton = trigger.locator('button');
|
|
37
|
-
await trigger.click();
|
|
38
|
-
await expect(innerButton).toHaveAttribute('aria-expanded', 'true');
|
|
39
|
-
const closeButton = page.locator('sds-dialog#dialog-example sds-button[slot="footer"][command="close"]');
|
|
40
|
-
await closeButton.click();
|
|
41
|
-
await expect(innerButton).toHaveAttribute('aria-expanded', 'false');
|
|
42
|
-
});
|
|
43
|
-
test('closing via ESC resets aria-expanded', async ({ page }) => {
|
|
44
|
-
const trigger = page.locator('sds-button[commandfor="dialog-example"][command="show-modal"]');
|
|
45
|
-
const innerButton = trigger.locator('button');
|
|
46
|
-
await trigger.click();
|
|
47
|
-
await expect(innerButton).toHaveAttribute('aria-expanded', 'true');
|
|
48
|
-
await page.keyboard.press('Escape');
|
|
49
|
-
await expect(innerButton).toHaveAttribute('aria-expanded', 'false');
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
test.describe('also supports data-command', () => {
|
|
53
|
-
test('can open and close using data-command', async ({ page }) => {
|
|
54
|
-
const opener = page.locator('sds-button#trigger-data');
|
|
55
|
-
const closer = page.locator('sds-button#close-data');
|
|
56
|
-
const dialog = page.locator('sds-dialog#command-fixture-dialog');
|
|
57
|
-
await opener.click();
|
|
58
|
-
await expect(dialog).toHaveAttribute('open');
|
|
59
|
-
await closer.click();
|
|
60
|
-
await expect(dialog).not.toHaveAttribute('open');
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=sds-dialog.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-dialog.spec.js","sourceRoot":"","sources":["../../src/sds-dialog/sds-dialog.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\n\ntest.describe('dialog-component', () => {\n\ttest.beforeEach(async ({ page }) => {\n\t\tawait page.goto('iframe.html?viewMode=docs&id=test-dialog--docs');\n\n\t\tawait page.evaluate(async () => {\n\t\t\tawait customElements.whenDefined('sds-dialog');\n\t\t});\n\t});\n\n\ttest.describe('commandfor', () => {\n\t\ttest('sets aria-haspopup on the trigger button', async ({ page }) => {\n\t\t\tconst innerButton = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]').locator('button');\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-haspopup', 'dialog');\n\t\t});\n\n\t\ttest('sets aria-controls on the trigger button', async ({ page }) => {\n\t\t\tconst innerButton = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]').locator('button');\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-controls', 'dialog-example');\n\t\t});\n\n\t\ttest('aria-expanded is false before opening', async ({ page }) => {\n\t\t\tconst innerButton = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]').locator('button');\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-expanded', 'false');\n\t\t});\n\n\t\ttest('clicking the trigger opens the dialog', async ({ page }) => {\n\t\t\tconst trigger = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]');\n\t\t\tconst dialog = page.locator('sds-dialog#dialog-example');\n\n\t\t\tawait trigger.click();\n\n\t\t\tawait expect(dialog).toHaveAttribute('open');\n\t\t});\n\n\t\ttest('aria-expanded is true when dialog is open', async ({ page }) => {\n\t\t\tconst trigger = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]');\n\t\t\tconst innerButton = trigger.locator('button');\n\n\t\t\tawait trigger.click();\n\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-expanded', 'true');\n\t\t});\n\n\t\ttest('closing via command=\"close\" resets aria-expanded', async ({ page }) => {\n\t\t\tconst trigger = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]');\n\t\t\tconst innerButton = trigger.locator('button');\n\n\t\t\tawait trigger.click();\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-expanded', 'true');\n\n\t\t\tconst closeButton = page.locator('sds-dialog#dialog-example sds-button[slot=\"footer\"][command=\"close\"]');\n\t\t\tawait closeButton.click();\n\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-expanded', 'false');\n\t\t});\n\n\t\ttest('closing via ESC resets aria-expanded', async ({ page }) => {\n\t\t\tconst trigger = page.locator('sds-button[commandfor=\"dialog-example\"][command=\"show-modal\"]');\n\t\t\tconst innerButton = trigger.locator('button');\n\n\t\t\tawait trigger.click();\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-expanded', 'true');\n\n\t\t\tawait page.keyboard.press('Escape');\n\n\t\t\tawait expect(innerButton).toHaveAttribute('aria-expanded', 'false');\n\t\t});\n\t});\n\n\ttest.describe('also supports data-command', () => {\n\t\ttest('can open and close using data-command', async ({ page }) => {\n\t\t\tconst opener = page.locator('sds-button#trigger-data');\n\t\t\tconst closer = page.locator('sds-button#close-data');\n\t\t\tconst dialog = page.locator('sds-dialog#command-fixture-dialog');\n\n\t\t\tawait opener.click();\n\t\t\tawait expect(dialog).toHaveAttribute('open');\n\n\t\t\tawait closer.click();\n\t\t\tawait expect(dialog).not.toHaveAttribute('open');\n\t\t});\n\t});\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-radio.spec.d.ts","sourceRoot":"","sources":["../../src/sds-radio/sds-radio.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { test } from '@playwright/test';
|
|
2
|
-
import { onFormSubmitCallback } from '../playwright-util/form';
|
|
3
|
-
import { expect } from '../playwright-util/custom-matchers';
|
|
4
|
-
test.describe('radio-component', () => {
|
|
5
|
-
test.beforeEach(async ({ page }) => {
|
|
6
|
-
await page.goto('iframe.html?viewMode=docs&id=test-radio--docs');
|
|
7
|
-
});
|
|
8
|
-
test('visibility', async ({ page }) => {
|
|
9
|
-
await expect(page.locator('#with-label')).toBeVisible();
|
|
10
|
-
await expect(page.locator('#unchecked')).toBeVisible();
|
|
11
|
-
await expect(page.locator('#checked')).toBeVisible();
|
|
12
|
-
await expect(page.locator('#custom-value')).toBeVisible();
|
|
13
|
-
await expect(page.locator('#disabled')).toBeVisible();
|
|
14
|
-
await expect(page.locator('#checked-disabled')).toBeVisible();
|
|
15
|
-
});
|
|
16
|
-
test('states', async ({ page }) => {
|
|
17
|
-
const radioWithLabel = page.locator('#with-label');
|
|
18
|
-
await expect(radioWithLabel).isNotChecked();
|
|
19
|
-
const uncheckedRadio = page.locator('#unchecked');
|
|
20
|
-
await expect(uncheckedRadio).isNotChecked();
|
|
21
|
-
const checkedRadio = page.locator('#checked');
|
|
22
|
-
await expect(checkedRadio).isChecked();
|
|
23
|
-
const disabledRadio = page.locator('#disabled');
|
|
24
|
-
await expect(disabledRadio).toHaveAttribute('disabled', '');
|
|
25
|
-
const checkedDisabledRadio = page.locator('#checked-disabled');
|
|
26
|
-
await expect(checkedDisabledRadio).isChecked();
|
|
27
|
-
await expect(checkedDisabledRadio).toHaveAttribute('disabled', '');
|
|
28
|
-
});
|
|
29
|
-
test('interaction', async ({ page }) => {
|
|
30
|
-
await page.getByLabel('Radio button with label').click();
|
|
31
|
-
const radioWithLabel = page.locator('#with-label');
|
|
32
|
-
await expect(radioWithLabel).isChecked();
|
|
33
|
-
const uncheckedRadio = page.locator('#unchecked');
|
|
34
|
-
await uncheckedRadio.click();
|
|
35
|
-
await expect(uncheckedRadio).isChecked();
|
|
36
|
-
const disabledRadio = page.locator('#disabled');
|
|
37
|
-
await disabledRadio.click();
|
|
38
|
-
await expect(disabledRadio).isNotChecked();
|
|
39
|
-
const checkedDisabledRadio = page.locator('#checked-disabled');
|
|
40
|
-
await checkedDisabledRadio.click();
|
|
41
|
-
await expect(checkedDisabledRadio).isChecked();
|
|
42
|
-
});
|
|
43
|
-
test('form-submission', async ({ page }) => {
|
|
44
|
-
const getFormData = await onFormSubmitCallback(page, 'radio-form');
|
|
45
|
-
const radioGroupMember = page.locator('#group-member-1');
|
|
46
|
-
await radioGroupMember.click();
|
|
47
|
-
const radioGroupMember2 = page.locator('#group-member-2');
|
|
48
|
-
await radioGroupMember2.click();
|
|
49
|
-
const radioGroupMember3 = page.locator('#group-member-3');
|
|
50
|
-
await radioGroupMember3.click();
|
|
51
|
-
await page.locator('#submit-button').click();
|
|
52
|
-
await expect.poll(async () => (await getFormData()) !== null, 'Form data not received').toBeTruthy();
|
|
53
|
-
const formData = await getFormData();
|
|
54
|
-
expect(formData).toMatchObject({
|
|
55
|
-
checked: 'on',
|
|
56
|
-
'custom-value': 'custom-value',
|
|
57
|
-
'radio-group': 'option-3',
|
|
58
|
-
});
|
|
59
|
-
expect(formData).not.toHaveProperty('unchecked');
|
|
60
|
-
expect(formData).not.toHaveProperty('disabled');
|
|
61
|
-
expect(formData).not.toHaveProperty('checked-disabled');
|
|
62
|
-
});
|
|
63
|
-
test('form-reset', async ({ page }) => {
|
|
64
|
-
await page.locator('#unchecked').click();
|
|
65
|
-
await page.locator('#checked').click();
|
|
66
|
-
await page.locator('#reset-button').click();
|
|
67
|
-
await expect(page.locator('#unchecked')).isNotChecked();
|
|
68
|
-
await expect(page.locator('#checked')).isChecked();
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
//# sourceMappingURL=sds-radio.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-radio.spec.js","sourceRoot":"","sources":["../../src/sds-radio/sds-radio.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test } from '@playwright/test';\nimport { onFormSubmitCallback } from '../playwright-util/form';\nimport { expect } from '../playwright-util/custom-matchers';\n\ntest.describe('radio-component', () => {\n\ttest.beforeEach(async ({ page }) => {\n\t\tawait page.goto('iframe.html?viewMode=docs&id=test-radio--docs');\n\t});\n\n\ttest('visibility', async ({ page }) => {\n\t\tawait expect(page.locator('#with-label')).toBeVisible();\n\t\tawait expect(page.locator('#unchecked')).toBeVisible();\n\t\tawait expect(page.locator('#checked')).toBeVisible();\n\t\tawait expect(page.locator('#custom-value')).toBeVisible();\n\t\tawait expect(page.locator('#disabled')).toBeVisible();\n\t\tawait expect(page.locator('#checked-disabled')).toBeVisible();\n\t});\n\n\ttest('states', async ({ page }) => {\n\t\tconst radioWithLabel = page.locator('#with-label');\n\t\tawait expect(radioWithLabel).isNotChecked();\n\n\t\tconst uncheckedRadio = page.locator('#unchecked');\n\t\tawait expect(uncheckedRadio).isNotChecked();\n\n\t\tconst checkedRadio = page.locator('#checked');\n\t\tawait expect(checkedRadio).isChecked();\n\n\t\tconst disabledRadio = page.locator('#disabled');\n\t\tawait expect(disabledRadio).toHaveAttribute('disabled', '');\n\n\t\tconst checkedDisabledRadio = page.locator('#checked-disabled');\n\t\tawait expect(checkedDisabledRadio).isChecked();\n\t\tawait expect(checkedDisabledRadio).toHaveAttribute('disabled', '');\n\t});\n\n\ttest('interaction', async ({ page }) => {\n\t\tawait page.getByLabel('Radio button with label').click();\n\t\tconst radioWithLabel = page.locator('#with-label');\n\t\tawait expect(radioWithLabel).isChecked();\n\n\t\tconst uncheckedRadio = page.locator('#unchecked');\n\t\tawait uncheckedRadio.click();\n\t\tawait expect(uncheckedRadio).isChecked();\n\n\t\tconst disabledRadio = page.locator('#disabled');\n\t\tawait disabledRadio.click();\n\t\tawait expect(disabledRadio).isNotChecked();\n\n\t\tconst checkedDisabledRadio = page.locator('#checked-disabled');\n\t\tawait checkedDisabledRadio.click();\n\t\tawait expect(checkedDisabledRadio).isChecked();\n\t});\n\n\ttest('form-submission', async ({ page }) => {\n\t\tconst getFormData = await onFormSubmitCallback(page, 'radio-form');\n\n\t\tconst radioGroupMember = page.locator('#group-member-1');\n\t\tawait radioGroupMember.click();\n\n\t\tconst radioGroupMember2 = page.locator('#group-member-2');\n\t\tawait radioGroupMember2.click();\n\n\t\tconst radioGroupMember3 = page.locator('#group-member-3');\n\t\tawait radioGroupMember3.click();\n\n\t\tawait page.locator('#submit-button').click();\n\n\t\tawait expect.poll(async () => (await getFormData()) !== null, 'Form data not received').toBeTruthy();\n\t\tconst formData = await getFormData();\n\n\t\texpect(formData).toMatchObject({\n\t\t\tchecked: 'on',\n\t\t\t'custom-value': 'custom-value',\n\t\t\t'radio-group': 'option-3',\n\t\t});\n\t\texpect(formData).not.toHaveProperty('unchecked');\n\t\texpect(formData).not.toHaveProperty('disabled');\n\t\texpect(formData).not.toHaveProperty('checked-disabled');\n\t});\n\n\ttest('form-reset', async ({ page }) => {\n\t\tawait page.locator('#unchecked').click();\n\t\tawait page.locator('#checked').click();\n\n\t\tawait page.locator('#reset-button').click();\n\n\t\tawait expect(page.locator('#unchecked')).isNotChecked();\n\t\tawait expect(page.locator('#checked')).isChecked();\n\t});\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-textfield.spec.d.ts","sourceRoot":"","sources":["../../src/sds-textfield/sds-textfield.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { test, expect } from '@playwright/test';
|
|
2
|
-
import { expect as sdsExpect } from '../playwright-util/custom-matchers';
|
|
3
|
-
const textfieldIds = [
|
|
4
|
-
'textfield-name',
|
|
5
|
-
'textfield-label',
|
|
6
|
-
'textfield-placeholder',
|
|
7
|
-
'textfield-helptext',
|
|
8
|
-
'textfield-disabled',
|
|
9
|
-
'textfield-readonly',
|
|
10
|
-
'textfield-required',
|
|
11
|
-
'textfield-error',
|
|
12
|
-
'textfield-icon',
|
|
13
|
-
'textfield-autocomplete-off',
|
|
14
|
-
'textfield-autocomplete-on',
|
|
15
|
-
'textfield-pattern',
|
|
16
|
-
'textfield-min',
|
|
17
|
-
'textfield-max',
|
|
18
|
-
];
|
|
19
|
-
const pageUrl = 'iframe.html?viewMode=docs&id=test-textfield--docs';
|
|
20
|
-
test.describe('textfield-component', () => {
|
|
21
|
-
test.beforeEach(async ({ page }) => {
|
|
22
|
-
await page.goto(pageUrl);
|
|
23
|
-
});
|
|
24
|
-
test('visibility', async ({ page }) => {
|
|
25
|
-
for (const id of textfieldIds) {
|
|
26
|
-
await expect(page.locator(`#${id}`)).toBeVisible();
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
test('design-implementation', async ({ page }) => {
|
|
30
|
-
await page.reload();
|
|
31
|
-
for (const id of textfieldIds) {
|
|
32
|
-
// Default state
|
|
33
|
-
await expect(page.locator(`#${id}`)).toHaveScreenshot(`${id}.png`);
|
|
34
|
-
// Hover state
|
|
35
|
-
if (!id.includes('disabled')) {
|
|
36
|
-
await page.locator(`#${id}`).hover();
|
|
37
|
-
await expect(page.locator(`#${id}`)).toHaveScreenshot(`${id}-hover.png`);
|
|
38
|
-
}
|
|
39
|
-
// Focus state
|
|
40
|
-
await page.evaluate((id) => {
|
|
41
|
-
const element = document.getElementById(id);
|
|
42
|
-
if (element) {
|
|
43
|
-
const parentDiv = document.createElement('div');
|
|
44
|
-
parentDiv.style.padding = '10px';
|
|
45
|
-
parentDiv.style.backgroundColor = 'white';
|
|
46
|
-
element.parentNode?.insertBefore(parentDiv, element);
|
|
47
|
-
parentDiv.appendChild(element);
|
|
48
|
-
}
|
|
49
|
-
}, id);
|
|
50
|
-
await page.locator(`#${id}`).focus();
|
|
51
|
-
const parentDiv = await page.locator(`#${id}`).locator('xpath=..');
|
|
52
|
-
await expect(parentDiv).toHaveScreenshot(`${id}-focus.png`);
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
test('form-submission', async ({ page }) => {
|
|
56
|
-
let requestUrl;
|
|
57
|
-
page.on('request', (request) => {
|
|
58
|
-
if (request.url().includes('iframe.html?name=John')) {
|
|
59
|
-
requestUrl = new URL(request.url());
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
await page.locator('#textfield-name').pressSequentially('John');
|
|
63
|
-
await page.locator('#submit-button').click();
|
|
64
|
-
await expect(requestUrl?.searchParams.get('name')).toBe('John');
|
|
65
|
-
});
|
|
66
|
-
test('form-reset', async ({ page }) => {
|
|
67
|
-
await page.locator('#textfield-name').pressSequentially('John');
|
|
68
|
-
await page.locator('#reset-button').click();
|
|
69
|
-
const value = await page.locator('#textfield-name').getAttribute('value');
|
|
70
|
-
expect(value).toBeNull();
|
|
71
|
-
});
|
|
72
|
-
test('minlength', async ({ page }) => {
|
|
73
|
-
const textfield = page.locator('#textfield-min');
|
|
74
|
-
await expect(textfield).toHaveAttribute('minlength', '4');
|
|
75
|
-
const nestedInputHasMinlength = await textfield.evaluate((el) => el.hasAttribute('minlength'));
|
|
76
|
-
expect(nestedInputHasMinlength).toBe(true);
|
|
77
|
-
});
|
|
78
|
-
test('maxlength', async ({ page }) => {
|
|
79
|
-
const textfield = page.locator('#textfield-max');
|
|
80
|
-
await textfield.pressSequentially('abcdef');
|
|
81
|
-
await sdsExpect(textfield).toHaveValue('abcd');
|
|
82
|
-
});
|
|
83
|
-
test('pattern', async ({ page }) => {
|
|
84
|
-
const textfield = page.locator('#textfield-pattern');
|
|
85
|
-
// Non-digits → invalid
|
|
86
|
-
await textfield.pressSequentially('abcd');
|
|
87
|
-
let isValid = await textfield.evaluate((el) => el.checkValidity());
|
|
88
|
-
expect(isValid).toBe(false);
|
|
89
|
-
// Too few digits → invalid
|
|
90
|
-
await page.goto(pageUrl);
|
|
91
|
-
await textfield.pressSequentially('123');
|
|
92
|
-
isValid = await textfield.evaluate((el) => el.checkValidity());
|
|
93
|
-
expect(isValid).toBe(false);
|
|
94
|
-
// Exactly 4 digits → valid
|
|
95
|
-
await page.goto(pageUrl);
|
|
96
|
-
await textfield.pressSequentially('1234');
|
|
97
|
-
isValid = await textfield.evaluate((el) => el.checkValidity());
|
|
98
|
-
expect(isValid).toBe(true);
|
|
99
|
-
// Too many digits → invalid
|
|
100
|
-
await page.goto(pageUrl);
|
|
101
|
-
await textfield.pressSequentially('12345');
|
|
102
|
-
isValid = await textfield.evaluate((el) => el.checkValidity());
|
|
103
|
-
expect(isValid).toBe(false);
|
|
104
|
-
});
|
|
105
|
-
test('required', async ({ page }) => {
|
|
106
|
-
const textfield = page.locator('#textfield-required');
|
|
107
|
-
// No value → invalid
|
|
108
|
-
let isValid = await textfield.evaluate((el) => el.checkValidity());
|
|
109
|
-
expect(isValid).toBe(false);
|
|
110
|
-
// Has value → valid
|
|
111
|
-
await page.goto(pageUrl);
|
|
112
|
-
await textfield.pressSequentially('abc');
|
|
113
|
-
isValid = await textfield.evaluate((el) => el.checkValidity());
|
|
114
|
-
expect(isValid).toBe(true);
|
|
115
|
-
});
|
|
116
|
-
test('readonly', async ({ page }) => {
|
|
117
|
-
const textfield = page.locator('#textfield-readonly');
|
|
118
|
-
await textfield.pressSequentially('abc');
|
|
119
|
-
await sdsExpect(textfield).toHaveValue('Kan ikke endres');
|
|
120
|
-
});
|
|
121
|
-
test('autocomplete on/off', async ({ page }) => {
|
|
122
|
-
const textfields = [
|
|
123
|
-
{ id: 'textfield-autocomplete-off', expected: 'off' },
|
|
124
|
-
{ id: 'textfield-autocomplete-on', expected: 'on' },
|
|
125
|
-
];
|
|
126
|
-
for (const { id, expected } of textfields) {
|
|
127
|
-
const host = page.locator(`#${id}`);
|
|
128
|
-
await expect(host).toHaveAttribute('autocomplete', expected);
|
|
129
|
-
const shadowDomInput = await host.evaluate((el) => {
|
|
130
|
-
const input = el.shadowRoot?.querySelector('input');
|
|
131
|
-
return input?.autocomplete ?? null;
|
|
132
|
-
});
|
|
133
|
-
expect(shadowDomInput).toBe(expected);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
//# sourceMappingURL=sds-textfield.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-textfield.spec.js","sourceRoot":"","sources":["../../src/sds-textfield/sds-textfield.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { expect as sdsExpect } from '../playwright-util/custom-matchers';\n\nconst textfieldIds = [\n\t'textfield-name',\n\t'textfield-label',\n\t'textfield-placeholder',\n\t'textfield-helptext',\n\t'textfield-disabled',\n\t'textfield-readonly',\n\t'textfield-required',\n\t'textfield-error',\n\t'textfield-icon',\n\t'textfield-autocomplete-off',\n\t'textfield-autocomplete-on',\n\t'textfield-pattern',\n\t'textfield-min',\n\t'textfield-max',\n];\n\nconst pageUrl = 'iframe.html?viewMode=docs&id=test-textfield--docs';\n\ntest.describe('textfield-component', () => {\n\ttest.beforeEach(async ({ page }) => {\n\t\tawait page.goto(pageUrl);\n\t});\n\n\ttest('visibility', async ({ page }) => {\n\t\tfor (const id of textfieldIds) {\n\t\t\tawait expect(page.locator(`#${id}`)).toBeVisible();\n\t\t}\n\t});\n\n\ttest('design-implementation', async ({ page }) => {\n\t\tawait page.reload();\n\n\t\tfor (const id of textfieldIds) {\n\t\t\t// Default state\n\t\t\tawait expect(page.locator(`#${id}`)).toHaveScreenshot(`${id}.png`);\n\t\t\t// Hover state\n\t\t\tif (!id.includes('disabled')) {\n\t\t\t\tawait page.locator(`#${id}`).hover();\n\t\t\t\tawait expect(page.locator(`#${id}`)).toHaveScreenshot(`${id}-hover.png`);\n\t\t\t}\n\t\t\t// Focus state\n\t\t\tawait page.evaluate((id) => {\n\t\t\t\tconst element = document.getElementById(id);\n\t\t\t\tif (element) {\n\t\t\t\t\tconst parentDiv = document.createElement('div');\n\t\t\t\t\tparentDiv.style.padding = '10px';\n\t\t\t\t\tparentDiv.style.backgroundColor = 'white';\n\t\t\t\t\telement.parentNode?.insertBefore(parentDiv, element);\n\t\t\t\t\tparentDiv.appendChild(element);\n\t\t\t\t}\n\t\t\t}, id);\n\t\t\tawait page.locator(`#${id}`).focus();\n\t\t\tconst parentDiv = await page.locator(`#${id}`).locator('xpath=..');\n\t\t\tawait expect(parentDiv).toHaveScreenshot(`${id}-focus.png`);\n\t\t}\n\t});\n\n\ttest('form-submission', async ({ page }) => {\n\t\tlet requestUrl: URL | undefined;\n\t\tpage.on('request', (request) => {\n\t\t\tif (request.url().includes('iframe.html?name=John')) {\n\t\t\t\trequestUrl = new URL(request.url());\n\t\t\t}\n\t\t});\n\n\t\tawait page.locator('#textfield-name').pressSequentially('John');\n\t\tawait page.locator('#submit-button').click();\n\t\tawait expect(requestUrl?.searchParams.get('name')).toBe('John');\n\t});\n\n\ttest('form-reset', async ({ page }) => {\n\t\tawait page.locator('#textfield-name').pressSequentially('John');\n\t\tawait page.locator('#reset-button').click();\n\t\tconst value = await page.locator('#textfield-name').getAttribute('value');\n\t\texpect(value).toBeNull();\n\t});\n\n\ttest('minlength', async ({ page }) => {\n\t\tconst textfield = page.locator('#textfield-min');\n\t\tawait expect(textfield).toHaveAttribute('minlength', '4');\n\t\tconst nestedInputHasMinlength = await textfield.evaluate((el: HTMLInputElement) => el.hasAttribute('minlength'));\n\t\texpect(nestedInputHasMinlength).toBe(true);\n\t});\n\n\ttest('maxlength', async ({ page }) => {\n\t\tconst textfield = page.locator('#textfield-max');\n\n\t\tawait textfield.pressSequentially('abcdef');\n\t\tawait sdsExpect(textfield).toHaveValue('abcd');\n\t});\n\n\ttest('pattern', async ({ page }) => {\n\t\tconst textfield = page.locator('#textfield-pattern');\n\n\t\t// Non-digits → invalid\n\t\tawait textfield.pressSequentially('abcd');\n\t\tlet isValid = await textfield.evaluate((el: HTMLInputElement) => el.checkValidity());\n\t\texpect(isValid).toBe(false);\n\n\t\t// Too few digits → invalid\n\t\tawait page.goto(pageUrl);\n\t\tawait textfield.pressSequentially('123');\n\t\tisValid = await textfield.evaluate((el: HTMLInputElement) => el.checkValidity());\n\t\texpect(isValid).toBe(false);\n\n\t\t// Exactly 4 digits → valid\n\t\tawait page.goto(pageUrl);\n\t\tawait textfield.pressSequentially('1234');\n\t\tisValid = await textfield.evaluate((el: HTMLInputElement) => el.checkValidity());\n\t\texpect(isValid).toBe(true);\n\n\t\t// Too many digits → invalid\n\t\tawait page.goto(pageUrl);\n\t\tawait textfield.pressSequentially('12345');\n\t\tisValid = await textfield.evaluate((el: HTMLInputElement) => el.checkValidity());\n\t\texpect(isValid).toBe(false);\n\t});\n\n\ttest('required', async ({ page }) => {\n\t\tconst textfield = page.locator('#textfield-required');\n\n\t\t// No value → invalid\n\t\tlet isValid = await textfield.evaluate((el: HTMLInputElement) => el.checkValidity());\n\t\texpect(isValid).toBe(false);\n\n\t\t// Has value → valid\n\t\tawait page.goto(pageUrl);\n\t\tawait textfield.pressSequentially('abc');\n\t\tisValid = await textfield.evaluate((el: HTMLInputElement) => el.checkValidity());\n\t\texpect(isValid).toBe(true);\n\t});\n\n\ttest('readonly', async ({ page }) => {\n\t\tconst textfield = page.locator('#textfield-readonly');\n\t\tawait textfield.pressSequentially('abc');\n\t\tawait sdsExpect(textfield).toHaveValue('Kan ikke endres');\n\t});\n\n\ttest('autocomplete on/off', async ({ page }) => {\n\t\tconst textfields = [\n\t\t\t{ id: 'textfield-autocomplete-off', expected: 'off' },\n\t\t\t{ id: 'textfield-autocomplete-on', expected: 'on' },\n\t\t];\n\n\t\tfor (const { id, expected } of textfields) {\n\t\t\tconst host = page.locator(`#${id}`);\n\n\t\t\tawait expect(host).toHaveAttribute('autocomplete', expected);\n\t\t\tconst shadowDomInput = await host.evaluate((el: HTMLElement) => {\n\t\t\t\tconst input = el.shadowRoot?.querySelector('input') as HTMLInputElement | null;\n\t\t\t\treturn input?.autocomplete ?? null;\n\t\t\t});\n\t\t\texpect(shadowDomInput).toBe(expected);\n\t\t}\n\t});\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-tooltip.spec.d.ts","sourceRoot":"","sources":["../../src/sds-tooltip/sds-tooltip.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { test, expect } from '@playwright/test';
|
|
2
|
-
test.describe('tooltip-component', () => {
|
|
3
|
-
test.beforeEach(async ({ page }) => {
|
|
4
|
-
await page.goto('iframe.html?viewMode=story&id=komponenter-tooltip--default');
|
|
5
|
-
});
|
|
6
|
-
test('is hidden by default', async ({ page }) => {
|
|
7
|
-
const tooltip = page.locator('#tooltip-default');
|
|
8
|
-
await expect(tooltip).not.toBeVisible();
|
|
9
|
-
});
|
|
10
|
-
test('shows on hover', async ({ page }) => {
|
|
11
|
-
const trigger = page.locator('sds-text[aria-describedby="tooltip-default"]');
|
|
12
|
-
const tooltip = page.locator('#tooltip-default');
|
|
13
|
-
await trigger.hover();
|
|
14
|
-
await expect(tooltip).toBeVisible();
|
|
15
|
-
});
|
|
16
|
-
test('shows on focus', async ({ page }) => {
|
|
17
|
-
const trigger = page.locator('sds-text[aria-describedby="tooltip-default"]');
|
|
18
|
-
const tooltip = page.locator('#tooltip-default');
|
|
19
|
-
await trigger.focus();
|
|
20
|
-
await expect(tooltip).toBeVisible();
|
|
21
|
-
});
|
|
22
|
-
test('hides on escape', async ({ page }) => {
|
|
23
|
-
const trigger = page.locator('sds-text[aria-describedby="tooltip-default"]');
|
|
24
|
-
const tooltip = page.locator('#tooltip-default');
|
|
25
|
-
await trigger.hover();
|
|
26
|
-
await expect(tooltip).toBeVisible();
|
|
27
|
-
await page.keyboard.press('Escape');
|
|
28
|
-
await expect(tooltip).not.toBeVisible();
|
|
29
|
-
});
|
|
30
|
-
test('has role tooltip', async ({ page }) => {
|
|
31
|
-
const tooltip = page.locator('#tooltip-default');
|
|
32
|
-
await expect(tooltip).toHaveAttribute('role', 'tooltip');
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
//# sourceMappingURL=sds-tooltip.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sds-tooltip.spec.js","sourceRoot":"","sources":["../../src/sds-tooltip/sds-tooltip.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\n\ntest.describe('tooltip-component', () => {\n\ttest.beforeEach(async ({ page }) => {\n\t\tawait page.goto('iframe.html?viewMode=story&id=komponenter-tooltip--default');\n\t});\n\n\ttest('is hidden by default', async ({ page }) => {\n\t\tconst tooltip = page.locator('#tooltip-default');\n\t\tawait expect(tooltip).not.toBeVisible();\n\t});\n\n\ttest('shows on hover', async ({ page }) => {\n\t\tconst trigger = page.locator('sds-text[aria-describedby=\"tooltip-default\"]');\n\t\tconst tooltip = page.locator('#tooltip-default');\n\n\t\tawait trigger.hover();\n\t\tawait expect(tooltip).toBeVisible();\n\t});\n\n\ttest('shows on focus', async ({ page }) => {\n\t\tconst trigger = page.locator('sds-text[aria-describedby=\"tooltip-default\"]');\n\t\tconst tooltip = page.locator('#tooltip-default');\n\n\t\tawait trigger.focus();\n\t\tawait expect(tooltip).toBeVisible();\n\t});\n\n\ttest('hides on escape', async ({ page }) => {\n\t\tconst trigger = page.locator('sds-text[aria-describedby=\"tooltip-default\"]');\n\t\tconst tooltip = page.locator('#tooltip-default');\n\n\t\tawait trigger.hover();\n\t\tawait expect(tooltip).toBeVisible();\n\n\t\tawait page.keyboard.press('Escape');\n\t\tawait expect(tooltip).not.toBeVisible();\n\t});\n\n\ttest('has role tooltip', async ({ page }) => {\n\t\tconst tooltip = page.locator('#tooltip-default');\n\t\tawait expect(tooltip).toHaveAttribute('role', 'tooltip');\n\t});\n});\n"]}
|