@zap-wunschlachen/wl-shared-components 1.0.37 → 1.0.38
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/.github/workflows/playwright.yml +205 -205
- package/.github/workflows/static.yml +61 -61
- package/.github/workflows/update-snapshots.yml +37 -37
- package/.prettierrc +5 -5
- package/.storybook/main.ts +18 -18
- package/.storybook/preview.ts +37 -37
- package/.storybook/storyWrapper.vue +18 -18
- package/.storybook/withVuetifyTheme.decorator.ts +21 -21
- package/App.vue +33 -43
- package/README.md +56 -56
- package/heroicons.ts +75 -75
- package/index.html +19 -19
- package/package.json +67 -67
- package/playwright.config.ts +48 -48
- package/public/background.svg +60 -60
- package/public/style.css +187 -187
- package/public/technologies.svg +22 -22
- package/src/assets/css/base.css +232 -232
- package/src/assets/css/variables.css +109 -109
- package/src/components/Accordion/Accordion.css +59 -59
- package/src/components/Accordion/AccordionGroup.vue +51 -51
- package/src/components/Accordion/AccordionItem.vue +66 -66
- package/src/components/Appointment/Card/Actions.css +54 -54
- package/src/components/Appointment/Card/Actions.vue +99 -99
- package/src/components/Appointment/Card/AnamneseNotification.css +15 -15
- package/src/components/Appointment/Card/AnamneseNotification.vue +23 -23
- package/src/components/Appointment/Card/Card.css +80 -80
- package/src/components/Appointment/Card/Card.vue +93 -93
- package/src/components/Appointment/Card/Details.css +50 -50
- package/src/components/Appointment/Card/Details.vue +43 -43
- package/src/components/Audio/Audio.vue +187 -187
- package/src/components/Audio/Waveform.vue +118 -118
- package/src/components/Button/Button.vue +174 -174
- package/src/components/CheckBox/CheckBox.css +214 -214
- package/src/components/CheckBox/Checkbox.vue +138 -138
- package/src/components/DateInput/DateInput.css +2 -2
- package/src/components/DateInput/DateInput.vue +262 -262
- package/src/components/Dialog/Dialog.css +6 -6
- package/src/components/Dialog/Dialog.vue +38 -38
- package/src/components/EditField/EditField.css +19 -19
- package/src/components/EditField/EditField.vue +202 -202
- package/src/components/ErrorPage/ErrorPage.css +172 -172
- package/src/components/IconBullet/IconBullet.vue +86 -86
- package/src/components/IconBullet/IconBulletList.vue +41 -41
- package/src/components/Icons/AdvanceAppointments.vue +153 -153
- package/src/components/Icons/Audio/CloudFailed.vue +20 -20
- package/src/components/Icons/Audio/CloudSaved.vue +21 -21
- package/src/components/Icons/Audio/Delete.vue +15 -15
- package/src/components/Icons/Audio/Pause.vue +18 -18
- package/src/components/Icons/Audio/Play.vue +15 -15
- package/src/components/Icons/CalendarNotification.vue +126 -126
- package/src/components/Icons/Chair.vue +32 -32
- package/src/components/Icons/ChairNotification.vue +35 -35
- package/src/components/Icons/Circle.vue +66 -66
- package/src/components/Icons/FavIcon.vue +22 -22
- package/src/components/Icons/FilledCircle.vue +11 -11
- package/src/components/Icons/Group3.vue +46 -46
- package/src/components/Icons/RingNotification.vue +54 -54
- package/src/components/Icons/SolidArrowRight.vue +14 -14
- package/src/components/Icons/calendar.vue +17 -17
- package/src/components/Icons/checkbox.vue +19 -19
- package/src/components/Icons/outlineChecked.vue +27 -27
- package/src/components/Icons/play.vue +5 -5
- package/src/components/Input/Input.css +187 -187
- package/src/components/Input/Input.vue +253 -253
- package/src/components/Laboratory/AppointmentCard/AppointmentCard.css +7 -7
- package/src/components/Laboratory/AppointmentCard/AppointmentCard.vue +116 -116
- package/src/components/Laboratory/ChatBoxImage/ChatBoxImage.vue +81 -81
- package/src/components/Laboratory/ChatMessage/ChatMessage.vue +113 -113
- package/src/components/Laboratory/ChatMessage/ChatMessageBadge.css +4 -4
- package/src/components/Laboratory/ChatMessage/ChatMessageBadge.vue +99 -99
- package/src/components/Laboratory/ChatNotification/ChatNotification.vue +130 -130
- package/src/components/Laboratory/DocumentCard/DocumentCard.css +3 -3
- package/src/components/Laboratory/DocumentCard/DocumentCard.vue +50 -50
- package/src/components/Laboratory/DocumentCard/DocumentCardItem.vue +53 -53
- package/src/components/Laboratory/InfoCard/InfoCard.vue +162 -162
- package/src/components/Laboratory/MainColumnsBar/MainColumnsBar.vue +102 -102
- package/src/components/Laboratory/ProgressCircle/ProgressCircle.vue +152 -152
- package/src/components/Laboratory/ProgressLinear/ProgressLinear.css +33 -33
- package/src/components/Laboratory/ProgressLinear/ProgressLinear.vue +75 -75
- package/src/components/Laboratory/SelectionColumnBar/SelectionColumnBar.vue +92 -92
- package/src/components/Laboratory/StatusNotification/StatusNotification.vue +49 -49
- package/src/components/Laboratory/TagLabel/TagLabel.vue +126 -126
- package/src/components/Laboratory/TagLabelGroup/TagLabelGroup.vue +97 -97
- package/src/components/Laboratory/TicketCard/TicketCard.css +3 -3
- package/src/components/Laboratory/TicketCard/TicketCard.vue +143 -143
- package/src/components/Laboratory/TimeLine/TimeLineEvent.css +18 -18
- package/src/components/Laboratory/TimeLine/TimeLineEvent.vue +119 -119
- package/src/components/Laboratory/TimeLine/Timeline.css +4 -4
- package/src/components/Laboratory/TimeLine/Timeline.vue +30 -30
- package/src/components/Loader/Loader.css +71 -71
- package/src/components/MaintenanceBanner/MaintenanceBanner.css +353 -353
- package/src/components/MaintenanceBanner/MaintenanceBanner.vue +127 -127
- package/src/components/MaintenanceBanner/MaintenanceIllustration.vue +54 -54
- package/src/components/Modal/Modal.css +5 -5
- package/src/components/Modal/Modal.vue +22 -22
- package/src/components/NotificationBubble/NotificationBubble.css +4 -4
- package/src/components/NotificationBubble/NotificationBubble.vue +90 -90
- package/src/components/OtpInput/OtpInput.css +39 -39
- package/src/components/OtpInput/OtpInput.vue +151 -151
- package/src/components/PhoneInput/PhoneInput.css +31 -31
- package/src/components/PhoneInput/PhoneInput.vue +113 -113
- package/src/components/Select/Select.css +150 -150
- package/src/components/Select/Select.vue +316 -316
- package/src/components/StagingBanner/StagingBanner.css +19 -0
- package/src/components/StagingBanner/StagingBanner.vue +82 -0
- package/src/components/TextArea/TextArea.css +3 -3
- package/src/components/TextArea/TextArea.vue +126 -126
- package/src/components/TickBox/TickBox.css +49 -49
- package/src/components/TickBox/TickBox.vue +126 -126
- package/src/components/accessibility.css +218 -218
- package/src/components/index.ts +29 -28
- package/src/constants/iconEnums.ts +3 -3
- package/src/i18n/i18n.ts +15 -15
- package/src/i18n/locales/de.json +30 -30
- package/src/i18n/locales/en.json +30 -30
- package/src/index.ts +34 -34
- package/src/main.ts +11 -11
- package/src/plugins/vuetify.ts +141 -141
- package/src/shims-vue.d.ts +10 -10
- package/src/stories/Accordion.stories.ts +650 -650
- package/src/stories/Audio.stories.ts +28 -28
- package/src/stories/Button.stories.ts +263 -263
- package/src/stories/CheckBox.stories.ts +348 -348
- package/src/stories/DateInput.stories.ts +53 -53
- package/src/stories/Dialog.stories.ts +147 -147
- package/src/stories/EditField.stories.ts +78 -78
- package/src/stories/IconBullet/IconBullet.stories.ts +201 -201
- package/src/stories/IconBullet/IconBulletList.stories.ts +275 -275
- package/src/stories/Input.stories.ts +351 -351
- package/src/stories/Laboratory/Cards/AppointmentCard/AppointmentCard.stories.ts +260 -260
- package/src/stories/Laboratory/Cards/DocumentCard/DocumentCard.stories.ts +176 -176
- package/src/stories/Laboratory/Cards/DocumentCard/DocumentCardItem.stories.ts +119 -119
- package/src/stories/Laboratory/Cards/InfoCard/InfoCard.stories.ts +320 -320
- package/src/stories/Laboratory/Cards/TicketCard/TicketCard.stories.ts +335 -335
- package/src/stories/Laboratory/Chat/ChatBoxImage.stories.ts +82 -82
- package/src/stories/Laboratory/Chat/ChatMessage.stories.ts +198 -198
- package/src/stories/Laboratory/Chat/ChatMessageBadge.stories.ts +204 -204
- package/src/stories/Laboratory/Chat/ChatNotification.stories.ts +144 -144
- package/src/stories/Laboratory/Chat/ProgressLinear.stories.ts +186 -186
- package/src/stories/Laboratory/Chat/StatusNotification.stories.ts +111 -111
- package/src/stories/Laboratory/MainColumnsBar.stories.ts +48 -48
- package/src/stories/Laboratory/ProgressCircle.stories.ts +261 -261
- package/src/stories/Laboratory/SelectionColumnBar.stories.ts +234 -234
- package/src/stories/Laboratory/TagLabel.stories.ts +418 -418
- package/src/stories/Laboratory/TagLabelGroup.stories.ts +234 -234
- package/src/stories/Laboratory/Timeline.stories.ts +403 -403
- package/src/stories/NotificationBubble.stories.ts +194 -194
- package/src/stories/OtpInput.stories.ts +100 -100
- package/src/stories/PhoneInput.stories.ts +52 -52
- package/src/stories/Select.stories.ts +419 -419
- package/src/stories/TextArea.stories.ts +112 -112
- package/src/stories/TickBox.stories.ts +294 -294
- package/src/stories/v-icon.stories.ts +91 -91
- package/src/utils/index.ts +109 -109
- package/src/vite-env.d.ts +1 -1
- package/tests/e2e/README.md +220 -220
- package/tests/e2e/accessibility.spec.ts +638 -638
- package/tests/e2e/accordion.spec.ts +42 -42
- package/tests/e2e/additional-components.spec.ts +437 -437
- package/tests/e2e/all-components.spec.ts +135 -135
- package/tests/e2e/appointment-card.spec.ts +816 -816
- package/tests/e2e/button-fixed.spec.ts +58 -58
- package/tests/e2e/button.spec.ts +76 -76
- package/tests/e2e/checkbox.spec.ts +50 -50
- package/tests/e2e/date-input.spec.ts +46 -46
- package/tests/e2e/debug.spec.ts +51 -51
- package/tests/e2e/dialog.spec.ts +58 -58
- package/tests/e2e/input.spec.ts +55 -55
- package/tests/e2e/laboratory-components.spec.ts +320 -320
- package/tests/e2e/otp-input.spec.ts +50 -50
- package/tests/e2e/select.spec.ts +52 -52
- package/tests/e2e/storybook-utils.ts +59 -59
- package/tests/e2e/test-basic.spec.ts +33 -33
- package/tests/e2e/visual-regression.spec.ts +350 -350
- package/tests/unit/accessibility/component-a11y.spec.ts +469 -469
- package/tests/unit/components/Accordion/AccordionGroup.spec.ts +228 -228
- package/tests/unit/components/Accordion/AccordionGroup.spec.ts.skip +342 -342
- package/tests/unit/components/Accordion/AccordionItem.spec.ts +292 -292
- package/tests/unit/components/Accordion/AccordionItem.spec.ts.skip +383 -383
- package/tests/unit/components/Appointment/AnamneseNotification.spec.ts +176 -176
- package/tests/unit/components/Appointment/Card/Actions.spec.ts +407 -407
- package/tests/unit/components/Appointment/Card/Card.spec.ts +485 -485
- package/tests/unit/components/Appointment/Card/Details.spec.ts +397 -397
- package/tests/unit/components/Audio/Audio.spec.ts +403 -403
- package/tests/unit/components/Audio/Waveform.spec.ts +483 -483
- package/tests/unit/components/Background/Background.spec.ts +177 -177
- package/tests/unit/components/Core/Button.spec.ts +336 -336
- package/tests/unit/components/Core/Checkbox.spec.ts +544 -544
- package/tests/unit/components/Core/DateInput.spec.ts +690 -690
- package/tests/unit/components/Core/Dialog.spec.ts +485 -485
- package/tests/unit/components/Core/EditField.spec.ts +782 -782
- package/tests/unit/components/Core/Input.spec.ts +512 -512
- package/tests/unit/components/Core/Modal.spec.ts +518 -518
- package/tests/unit/components/Core/NotificationBubble.spec.ts +606 -606
- package/tests/unit/components/Core/OtpInput.spec.ts +708 -708
- package/tests/unit/components/Core/PhoneInput.spec.ts +619 -619
- package/tests/unit/components/Core/Select.spec.ts +712 -712
- package/tests/unit/components/Core/TextArea.spec.ts +565 -565
- package/tests/unit/components/Core/TickBox.spec.ts +779 -779
- package/tests/unit/components/ErrorPage/ErrorPage.spec.ts +313 -313
- package/tests/unit/components/ErrorPage/ErrorPageLogo.spec.ts +153 -153
- package/tests/unit/components/IconBullet/IconBullet.spec.ts +356 -356
- package/tests/unit/components/IconBullet/IconBulletList.spec.ts +371 -371
- package/tests/unit/components/Icons/AdvanceAppointments.spec.ts +61 -61
- package/tests/unit/components/Icons/Audio/CloudFailed.spec.ts +108 -108
- package/tests/unit/components/Icons/Audio/CloudSaved.spec.ts +149 -149
- package/tests/unit/components/Icons/Audio/Delete.spec.ts +158 -158
- package/tests/unit/components/Icons/Audio/Pause.spec.ts +208 -208
- package/tests/unit/components/Icons/Audio/Play.spec.ts +217 -217
- package/tests/unit/components/Icons/CalendarNotification.spec.ts +186 -186
- package/tests/unit/components/Icons/Chair.spec.ts +234 -234
- package/tests/unit/components/Icons/ChairNotification.spec.ts +311 -311
- package/tests/unit/components/Icons/Circle.spec.ts +255 -255
- package/tests/unit/components/Icons/FavIcon.spec.ts +251 -251
- package/tests/unit/components/Icons/FilledCircle.spec.ts +274 -274
- package/tests/unit/components/Icons/Group3.spec.ts +355 -355
- package/tests/unit/components/Icons/Logo.spec.ts +228 -228
- package/tests/unit/components/Icons/MiniLogo.spec.ts +38 -38
- package/tests/unit/components/Icons/RingNotification.spec.ts +393 -393
- package/tests/unit/components/Icons/SolidArrowRight.spec.ts +49 -49
- package/tests/unit/components/Icons/calendar.spec.ts +286 -286
- package/tests/unit/components/Icons/checkbox.spec.ts +315 -315
- package/tests/unit/components/Icons/outlineChecked.spec.ts +434 -434
- package/tests/unit/components/Icons/play.spec.ts +308 -308
- package/tests/unit/components/Laboratory/AppointmentCard.spec.ts +167 -167
- package/tests/unit/components/Laboratory/ChatBoxImage.spec.ts +179 -179
- package/tests/unit/components/Laboratory/ChatMessage.spec.ts +263 -263
- package/tests/unit/components/Laboratory/ChatMessageBadge.spec.ts +282 -282
- package/tests/unit/components/Laboratory/ChatNotification.spec.ts +256 -256
- package/tests/unit/components/Laboratory/DocumentCard.spec.ts +228 -228
- package/tests/unit/components/Laboratory/DocumentCardItem.spec.ts +236 -236
- package/tests/unit/components/Laboratory/InfoCard.spec.ts +308 -308
- package/tests/unit/components/Laboratory/MainColumnsBar.spec.ts +251 -251
- package/tests/unit/components/Laboratory/ProgressCircle.spec.ts +290 -290
- package/tests/unit/components/Laboratory/ProgressLinear.spec.ts +275 -275
- package/tests/unit/components/Laboratory/SelectionColumnBar.spec.ts +288 -288
- package/tests/unit/components/Laboratory/StatusNotification.spec.ts +296 -296
- package/tests/unit/components/Laboratory/TagLabel.spec.ts +353 -353
- package/tests/unit/components/Laboratory/TagLabelGroup.spec.ts +377 -377
- package/tests/unit/components/Laboratory/TicketCard.spec.ts +351 -351
- package/tests/unit/components/Laboratory/TimeLineEvent.spec.ts +381 -381
- package/tests/unit/components/Laboratory/Timeline.spec.ts +419 -419
- package/tests/unit/components/Loader/Loader.spec.ts +197 -197
- package/tests/unit/components/MaintenanceBanner/MaintenanceBanner.spec.ts +302 -302
- package/tests/unit/constants/iconEnums.spec.ts +39 -39
- package/tests/unit/i18n/i18n.spec.ts +88 -88
- package/tests/unit/plugins/vuetify.spec.ts +220 -220
- package/tests/unit/setup.ts +189 -189
- package/tests/unit/src/components/index.spec.ts.skip +192 -192
- package/tests/unit/src/index.spec.ts.skip +182 -182
- package/tests/unit/src/main.spec.ts +151 -151
- package/tests/unit/utils/accessibility.spec.ts +318 -318
- package/tsconfig.json +26 -26
- package/vite.config.ts +29 -29
- package/vitest.config.ts +83 -83
- package/public/audio/test.aac +0 -0
|
@@ -1,136 +1,136 @@
|
|
|
1
|
-
import { test, expect } from '@playwright/test';
|
|
2
|
-
|
|
3
|
-
async function getFrame(page) {
|
|
4
|
-
await page.waitForSelector('#storybook-preview-iframe', { timeout: 30000 });
|
|
5
|
-
const frame = page.frame({ url: /iframe\.html/ });
|
|
6
|
-
if (!frame) throw new Error('Frame not found');
|
|
7
|
-
await frame.waitForSelector('body', { timeout: 30000, state: 'attached' });
|
|
8
|
-
await page.waitForTimeout(1000); // Give time for Vue components to mount
|
|
9
|
-
return frame;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
test.describe('Component Tests', () => {
|
|
13
|
-
test('Button - default', async ({ page }) => {
|
|
14
|
-
await page.goto('http://localhost:7000/?path=/story/wl-button--default');
|
|
15
|
-
const frame = await getFrame(page);
|
|
16
|
-
const button = frame.locator('button.v-btn:visible').first();
|
|
17
|
-
await expect(button).toBeVisible();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
test('Button - with icon', async ({ page }) => {
|
|
21
|
-
await page.goto('http://localhost:7000/?path=/story/wl-button--with-prepend-icon');
|
|
22
|
-
const frame = await getFrame(page);
|
|
23
|
-
const button = frame.locator('button.v-btn:visible').first();
|
|
24
|
-
await expect(button).toBeVisible();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('Button - loading', async ({ page }) => {
|
|
28
|
-
await page.goto('http://localhost:7000/?path=/story/wl-button--loading-state');
|
|
29
|
-
const frame = await getFrame(page);
|
|
30
|
-
const button = frame.locator('button.v-btn:visible').first();
|
|
31
|
-
await expect(button).toBeVisible();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('Input - default', async ({ page }) => {
|
|
35
|
-
await page.goto('http://localhost:7000/?path=/story/wl-input--default');
|
|
36
|
-
const frame = await getFrame(page);
|
|
37
|
-
const input = frame.locator('input:visible').first();
|
|
38
|
-
await expect(input).toBeVisible();
|
|
39
|
-
await input.fill('Test');
|
|
40
|
-
await expect(input).toHaveValue('Test');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
test('Select - default', async ({ page }) => {
|
|
44
|
-
await page.goto('http://localhost:7000/?path=/story/wl-select--default');
|
|
45
|
-
const frame = await getFrame(page);
|
|
46
|
-
const select = frame.locator('.wl-select').first();
|
|
47
|
-
await expect(select).toBeVisible();
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test('Checkbox - default', async ({ page }) => {
|
|
51
|
-
await page.goto('http://localhost:7000/?path=/story/wl-checkbox--default');
|
|
52
|
-
const frame = await getFrame(page);
|
|
53
|
-
const checkbox = frame.locator('input[type="checkbox"]').first();
|
|
54
|
-
await expect(checkbox).toBeAttached();
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
test('Accordion - default', async ({ page }) => {
|
|
58
|
-
await page.goto('http://localhost:7000/?path=/story/wl-accordion--outlined-inset');
|
|
59
|
-
const frame = await getFrame(page);
|
|
60
|
-
const accordion = frame.locator('.v-expansion-panels').first();
|
|
61
|
-
await expect(accordion).toBeVisible();
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
test('Dialog - default', async ({ page }) => {
|
|
65
|
-
await page.goto('http://localhost:7000/?path=/story/wl-dialog--default-dialog');
|
|
66
|
-
const frame = await getFrame(page);
|
|
67
|
-
const trigger = frame.locator('button:has-text("Neuen Entwurf erstellen")').first();
|
|
68
|
-
await expect(trigger).toBeVisible();
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test('DateInput - default', async ({ page }) => {
|
|
72
|
-
await page.goto('http://localhost:7000/?path=/story/wl-dateinput--default');
|
|
73
|
-
const frame = await getFrame(page);
|
|
74
|
-
const input = frame.locator('input').first();
|
|
75
|
-
await expect(input).toBeVisible();
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
test('OtpInput - default', async ({ page }) => {
|
|
79
|
-
await page.goto('http://localhost:7000/?path=/story/wl-otpinput--default');
|
|
80
|
-
const frame = await getFrame(page);
|
|
81
|
-
await frame.waitForSelector('input.v-otp-input__field', { state: 'attached', timeout: 3000 });
|
|
82
|
-
const inputs = frame.locator('input.v-otp-input__field');
|
|
83
|
-
const count = await inputs.count();
|
|
84
|
-
expect(count).toBe(6);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
test('Audio - default', async ({ page }) => {
|
|
88
|
-
await page.goto('http://localhost:7000/?path=/story/wl-audio--default');
|
|
89
|
-
const frame = await getFrame(page);
|
|
90
|
-
const audio = frame.locator('.audio-component, .waveform, audio').first();
|
|
91
|
-
await expect(audio).toBeVisible();
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
test('TextArea - default', async ({ page }) => {
|
|
95
|
-
await page.goto('http://localhost:7000/?path=/story/wl-textarea--default');
|
|
96
|
-
const frame = await getFrame(page);
|
|
97
|
-
const textarea = frame.locator('textarea, .v-textarea').first();
|
|
98
|
-
await expect(textarea).toBeVisible();
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
test('PhoneInput - default', async ({ page }) => {
|
|
102
|
-
await page.goto('http://localhost:7000/?path=/story/wl-phoneinput--default');
|
|
103
|
-
const frame = await getFrame(page);
|
|
104
|
-
const input = frame.locator('.phone-input, .v-field, input').first();
|
|
105
|
-
await expect(input).toBeVisible();
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
test('EditField - default', async ({ page }) => {
|
|
109
|
-
await page.goto('http://localhost:7000/?path=/story/wl-editfield--text-field');
|
|
110
|
-
const frame = await getFrame(page);
|
|
111
|
-
const field = frame.locator('.wl-edit-field, .v-field, .v-input').first();
|
|
112
|
-
await expect(field).toBeVisible();
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
test('TickBox - default', async ({ page }) => {
|
|
116
|
-
await page.goto('http://localhost:7000/?path=/story/wl-tickbox--default');
|
|
117
|
-
const frame = await getFrame(page);
|
|
118
|
-
const tickbox = frame.locator('.tick-box, .v-checkbox, input[type="checkbox"]').first();
|
|
119
|
-
await expect(tickbox).toBeVisible();
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
test.skip('Modal - default', async ({ page }) => {
|
|
123
|
-
// Skip test - Modal component story doesn't exist
|
|
124
|
-
await page.goto('http://localhost:7000/?path=/story/wl-modal--default');
|
|
125
|
-
const frame = await getFrame(page);
|
|
126
|
-
const trigger = frame.locator('button').first();
|
|
127
|
-
await expect(trigger).toBeVisible();
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
test('NotificationBubble - default', async ({ page }) => {
|
|
131
|
-
await page.goto('http://localhost:7000/?path=/story/wl-notificationbubble--default');
|
|
132
|
-
const frame = await getFrame(page);
|
|
133
|
-
const notification = frame.locator('.notification-bubble, .v-alert, .notification').first();
|
|
134
|
-
await expect(notification).toBeVisible();
|
|
135
|
-
});
|
|
1
|
+
import { test, expect } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
async function getFrame(page) {
|
|
4
|
+
await page.waitForSelector('#storybook-preview-iframe', { timeout: 30000 });
|
|
5
|
+
const frame = page.frame({ url: /iframe\.html/ });
|
|
6
|
+
if (!frame) throw new Error('Frame not found');
|
|
7
|
+
await frame.waitForSelector('body', { timeout: 30000, state: 'attached' });
|
|
8
|
+
await page.waitForTimeout(1000); // Give time for Vue components to mount
|
|
9
|
+
return frame;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
test.describe('Component Tests', () => {
|
|
13
|
+
test('Button - default', async ({ page }) => {
|
|
14
|
+
await page.goto('http://localhost:7000/?path=/story/wl-button--default');
|
|
15
|
+
const frame = await getFrame(page);
|
|
16
|
+
const button = frame.locator('button.v-btn:visible').first();
|
|
17
|
+
await expect(button).toBeVisible();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('Button - with icon', async ({ page }) => {
|
|
21
|
+
await page.goto('http://localhost:7000/?path=/story/wl-button--with-prepend-icon');
|
|
22
|
+
const frame = await getFrame(page);
|
|
23
|
+
const button = frame.locator('button.v-btn:visible').first();
|
|
24
|
+
await expect(button).toBeVisible();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('Button - loading', async ({ page }) => {
|
|
28
|
+
await page.goto('http://localhost:7000/?path=/story/wl-button--loading-state');
|
|
29
|
+
const frame = await getFrame(page);
|
|
30
|
+
const button = frame.locator('button.v-btn:visible').first();
|
|
31
|
+
await expect(button).toBeVisible();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('Input - default', async ({ page }) => {
|
|
35
|
+
await page.goto('http://localhost:7000/?path=/story/wl-input--default');
|
|
36
|
+
const frame = await getFrame(page);
|
|
37
|
+
const input = frame.locator('input:visible').first();
|
|
38
|
+
await expect(input).toBeVisible();
|
|
39
|
+
await input.fill('Test');
|
|
40
|
+
await expect(input).toHaveValue('Test');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('Select - default', async ({ page }) => {
|
|
44
|
+
await page.goto('http://localhost:7000/?path=/story/wl-select--default');
|
|
45
|
+
const frame = await getFrame(page);
|
|
46
|
+
const select = frame.locator('.wl-select').first();
|
|
47
|
+
await expect(select).toBeVisible();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('Checkbox - default', async ({ page }) => {
|
|
51
|
+
await page.goto('http://localhost:7000/?path=/story/wl-checkbox--default');
|
|
52
|
+
const frame = await getFrame(page);
|
|
53
|
+
const checkbox = frame.locator('input[type="checkbox"]').first();
|
|
54
|
+
await expect(checkbox).toBeAttached();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('Accordion - default', async ({ page }) => {
|
|
58
|
+
await page.goto('http://localhost:7000/?path=/story/wl-accordion--outlined-inset');
|
|
59
|
+
const frame = await getFrame(page);
|
|
60
|
+
const accordion = frame.locator('.v-expansion-panels').first();
|
|
61
|
+
await expect(accordion).toBeVisible();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('Dialog - default', async ({ page }) => {
|
|
65
|
+
await page.goto('http://localhost:7000/?path=/story/wl-dialog--default-dialog');
|
|
66
|
+
const frame = await getFrame(page);
|
|
67
|
+
const trigger = frame.locator('button:has-text("Neuen Entwurf erstellen")').first();
|
|
68
|
+
await expect(trigger).toBeVisible();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test('DateInput - default', async ({ page }) => {
|
|
72
|
+
await page.goto('http://localhost:7000/?path=/story/wl-dateinput--default');
|
|
73
|
+
const frame = await getFrame(page);
|
|
74
|
+
const input = frame.locator('input').first();
|
|
75
|
+
await expect(input).toBeVisible();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('OtpInput - default', async ({ page }) => {
|
|
79
|
+
await page.goto('http://localhost:7000/?path=/story/wl-otpinput--default');
|
|
80
|
+
const frame = await getFrame(page);
|
|
81
|
+
await frame.waitForSelector('input.v-otp-input__field', { state: 'attached', timeout: 3000 });
|
|
82
|
+
const inputs = frame.locator('input.v-otp-input__field');
|
|
83
|
+
const count = await inputs.count();
|
|
84
|
+
expect(count).toBe(6);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('Audio - default', async ({ page }) => {
|
|
88
|
+
await page.goto('http://localhost:7000/?path=/story/wl-audio--default');
|
|
89
|
+
const frame = await getFrame(page);
|
|
90
|
+
const audio = frame.locator('.audio-component, .waveform, audio').first();
|
|
91
|
+
await expect(audio).toBeVisible();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
test('TextArea - default', async ({ page }) => {
|
|
95
|
+
await page.goto('http://localhost:7000/?path=/story/wl-textarea--default');
|
|
96
|
+
const frame = await getFrame(page);
|
|
97
|
+
const textarea = frame.locator('textarea, .v-textarea').first();
|
|
98
|
+
await expect(textarea).toBeVisible();
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
test('PhoneInput - default', async ({ page }) => {
|
|
102
|
+
await page.goto('http://localhost:7000/?path=/story/wl-phoneinput--default');
|
|
103
|
+
const frame = await getFrame(page);
|
|
104
|
+
const input = frame.locator('.phone-input, .v-field, input').first();
|
|
105
|
+
await expect(input).toBeVisible();
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('EditField - default', async ({ page }) => {
|
|
109
|
+
await page.goto('http://localhost:7000/?path=/story/wl-editfield--text-field');
|
|
110
|
+
const frame = await getFrame(page);
|
|
111
|
+
const field = frame.locator('.wl-edit-field, .v-field, .v-input').first();
|
|
112
|
+
await expect(field).toBeVisible();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test('TickBox - default', async ({ page }) => {
|
|
116
|
+
await page.goto('http://localhost:7000/?path=/story/wl-tickbox--default');
|
|
117
|
+
const frame = await getFrame(page);
|
|
118
|
+
const tickbox = frame.locator('.tick-box, .v-checkbox, input[type="checkbox"]').first();
|
|
119
|
+
await expect(tickbox).toBeVisible();
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
test.skip('Modal - default', async ({ page }) => {
|
|
123
|
+
// Skip test - Modal component story doesn't exist
|
|
124
|
+
await page.goto('http://localhost:7000/?path=/story/wl-modal--default');
|
|
125
|
+
const frame = await getFrame(page);
|
|
126
|
+
const trigger = frame.locator('button').first();
|
|
127
|
+
await expect(trigger).toBeVisible();
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
test('NotificationBubble - default', async ({ page }) => {
|
|
131
|
+
await page.goto('http://localhost:7000/?path=/story/wl-notificationbubble--default');
|
|
132
|
+
const frame = await getFrame(page);
|
|
133
|
+
const notification = frame.locator('.notification-bubble, .v-alert, .notification').first();
|
|
134
|
+
await expect(notification).toBeVisible();
|
|
135
|
+
});
|
|
136
136
|
});
|