From 99bad872383a93eed3372eb3dbf07823111a8abd Mon Sep 17 00:00:00 2001 From: Sybren W Date: Thu, 28 Nov 2024 15:56:04 +0100 Subject: [PATCH 01/38] feat(playwright): inital setup playwright for vue --- .husky/_/pre-commit | 57 +++++++++++++ .husky/_/prepare-commit-msg | 57 +++++++++++++ bun.lockb | Bin 887860 -> 889744 bytes package.json | 13 ++- packages/vue/.gitignore | 5 ++ packages/vue/package.json | 10 ++- packages/vue/playwright.config.ts | 79 ++++++++++++++++++ .../vue/src/components/_tests/example.spec.ts | 18 ++++ 8 files changed, 235 insertions(+), 4 deletions(-) create mode 100755 .husky/_/pre-commit create mode 100755 .husky/_/prepare-commit-msg create mode 100644 packages/vue/.gitignore create mode 100644 packages/vue/playwright.config.ts create mode 100644 packages/vue/src/components/_tests/example.spec.ts diff --git a/.husky/_/pre-commit b/.husky/_/pre-commit new file mode 100755 index 0000000000..4855f61246 --- /dev/null +++ b/.husky/_/pre-commit @@ -0,0 +1,57 @@ +#!/bin/sh + +if [ "$LEFTHOOK_VERBOSE" = "1" -o "$LEFTHOOK_VERBOSE" = "true" ]; then + set -x +fi + +if [ "$LEFTHOOK" = "0" ]; then + exit 0 +fi + +call_lefthook() +{ + if test -n "$LEFTHOOK_BIN" + then + "$LEFTHOOK_BIN" "$@" + elif lefthook -h >/dev/null 2>&1 + then + lefthook "$@" + else + dir="$(git rev-parse --show-toplevel)" + osArch=$(uname | tr '[:upper:]' '[:lower:]') + cpuArch=$(uname -m | sed 's/aarch64/arm64/;s/x86_64/x64/') + if test -f "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" + then + "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" "$@" + elif test -f "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" + then + "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" "$@" + elif test -f "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" + then + "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" "$@" + elif test -f "$dir/node_modules/lefthook/bin/index.js" + then + "$dir/node_modules/lefthook/bin/index.js" "$@" + + elif bundle exec lefthook -h >/dev/null 2>&1 + then + bundle exec lefthook "$@" + elif yarn lefthook -h >/dev/null 2>&1 + then + yarn lefthook "$@" + elif pnpm lefthook -h >/dev/null 2>&1 + then + pnpm lefthook "$@" + elif swift package plugin lefthook >/dev/null 2>&1 + then + swift package --disable-sandbox plugin lefthook "$@" + elif command -v mint >/dev/null 2>&1 + then + mint run csjones/lefthook-plugin "$@" + else + echo "Can't find lefthook in PATH" + fi + fi +} + +call_lefthook run "pre-commit" "$@" diff --git a/.husky/_/prepare-commit-msg b/.husky/_/prepare-commit-msg new file mode 100755 index 0000000000..2655902bce --- /dev/null +++ b/.husky/_/prepare-commit-msg @@ -0,0 +1,57 @@ +#!/bin/sh + +if [ "$LEFTHOOK_VERBOSE" = "1" -o "$LEFTHOOK_VERBOSE" = "true" ]; then + set -x +fi + +if [ "$LEFTHOOK" = "0" ]; then + exit 0 +fi + +call_lefthook() +{ + if test -n "$LEFTHOOK_BIN" + then + "$LEFTHOOK_BIN" "$@" + elif lefthook -h >/dev/null 2>&1 + then + lefthook "$@" + else + dir="$(git rev-parse --show-toplevel)" + osArch=$(uname | tr '[:upper:]' '[:lower:]') + cpuArch=$(uname -m | sed 's/aarch64/arm64/;s/x86_64/x64/') + if test -f "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" + then + "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" "$@" + elif test -f "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" + then + "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" "$@" + elif test -f "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" + then + "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" "$@" + elif test -f "$dir/node_modules/lefthook/bin/index.js" + then + "$dir/node_modules/lefthook/bin/index.js" "$@" + + elif bundle exec lefthook -h >/dev/null 2>&1 + then + bundle exec lefthook "$@" + elif yarn lefthook -h >/dev/null 2>&1 + then + yarn lefthook "$@" + elif pnpm lefthook -h >/dev/null 2>&1 + then + pnpm lefthook "$@" + elif swift package plugin lefthook >/dev/null 2>&1 + then + swift package --disable-sandbox plugin lefthook "$@" + elif command -v mint >/dev/null 2>&1 + then + mint run csjones/lefthook-plugin "$@" + else + echo "Can't find lefthook in PATH" + fi + fi +} + +call_lefthook run "prepare-commit-msg" "$@" diff --git a/bun.lockb b/bun.lockb index 931716e907f255be85a03c7189aeb75bcadf58f9..2a0bb320f822c70daf978ce3e17478e3b320b4d6 100755 GIT binary patch delta 31560 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 AGXMYp delta 30668 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 { + await page.goto('https://playwright.dev/') + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/) +}) + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/') + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click() + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible() +}) From 176731ee450b5faf47fd015a57dd2a6a66cc06a0 Mon Sep 17 00:00:00 2001 From: Sybren W Date: Wed, 4 Dec 2024 13:54:11 +0100 Subject: [PATCH 02/38] chore(pw): add pw reports to git ignore --- packages/vue/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vue/.gitignore b/packages/vue/.gitignore index 68c5d18f00..51de079a40 100644 --- a/packages/vue/.gitignore +++ b/packages/vue/.gitignore @@ -3,3 +3,4 @@ node_modules/ /playwright-report/ /blob-report/ /playwright/.cache/ +src/components/_tests/reports/ From a3e5e31cbf372773998792ce6bdbd435e4e2d118 Mon Sep 17 00:00:00 2001 From: Sybren W Date: Wed, 4 Dec 2024 13:55:33 +0100 Subject: [PATCH 03/38] refactor(avatar): add id for story and variants for clean Histoire url --- packages/vue/src/components/avatar/avatar.stories.vue | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/vue/src/components/avatar/avatar.stories.vue b/packages/vue/src/components/avatar/avatar.stories.vue index 3ba59ad09a..7918cb976d 100644 --- a/packages/vue/src/components/avatar/avatar.stories.vue +++ b/packages/vue/src/components/avatar/avatar.stories.vue @@ -4,22 +4,23 @@ import Avatar from './examples/closed.vue' import Events from './examples/events.vue' import RootProvider from './examples/root-provider.vue' + diff --git a/packages/vue/src/components/avatar/examples/events.vue b/packages/vue/src/components/avatar/examples/events.vue index 93009e3f5c..d9f9edafc7 100644 --- a/packages/vue/src/components/avatar/examples/events.vue +++ b/packages/vue/src/components/avatar/examples/events.vue @@ -5,6 +5,6 @@ import { Avatar } from '@ark-ui/vue/avatar' diff --git a/packages/vue/src/components/avatar/examples/root-provider.vue b/packages/vue/src/components/avatar/examples/root-provider.vue index 694f4a9748..e579e39c26 100644 --- a/packages/vue/src/components/avatar/examples/root-provider.vue +++ b/packages/vue/src/components/avatar/examples/root-provider.vue @@ -9,6 +9,6 @@ const avatar = useAvatar() PA - + From 95ee07de3ededf8aa1b84908c3ba26f74845ed16 Mon Sep 17 00:00:00 2001 From: Sybren W Date: Sat, 7 Dec 2024 23:31:11 +0100 Subject: [PATCH 09/38] test(avatar): add screenshots for pw avatar tests --- .../basic-variant-has-avatar-image-1.png | Bin 0 -> 15360 bytes ...osed-variant-displays-avatar-with-name-1.png | Bin 0 -> 15360 bytes ...root-provided-variant-has-avatar-image-1.png | Bin 0 -> 17357 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/vue/src/components/_tests/avatar/__snapshots__/chromium/basic-variant-has-avatar-image-1.png create mode 100644 packages/vue/src/components/_tests/avatar/__snapshots__/chromium/closed-variant-displays-avatar-with-name-1.png create mode 100644 packages/vue/src/components/_tests/avatar/__snapshots__/chromium/root-provided-variant-has-avatar-image-1.png diff --git a/packages/vue/src/components/_tests/avatar/__snapshots__/chromium/basic-variant-has-avatar-image-1.png b/packages/vue/src/components/_tests/avatar/__snapshots__/chromium/basic-variant-has-avatar-image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2da36162f62868c2c9c2671899f929f979f95ba2 GIT binary patch literal 15360 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 Date: Sun, 8 Dec 2024 00:02:38 +0100 Subject: [PATCH 10/38] feat(playwright): add axe core playwright dep --- bun.lockb | Bin 889744 -> 890512 bytes packages/vue/package.json | 1 + 2 files changed, 1 insertion(+) diff --git a/bun.lockb b/bun.lockb index 2a0bb320f822c70daf978ce3e17478e3b320b4d6..35c8bfe349347b265ae165d0ff281fc8ed7e6357 100755 GIT binary patch delta 34690 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„B6WHo6Vn<lIJLSKxsbnj`L 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 JXKv1Q{|_V+iUt4x diff --git a/packages/vue/package.json b/packages/vue/package.json index 4f84c52c47..268bff5933 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -216,6 +216,7 @@ "@zag-js/vue": "0.77.1" }, "devDependencies": { + "@axe-core/playwright": "^4.10.1", "@biomejs/biome": "1.9.4", "@histoire/plugin-vue": "0.17.17", "@playwright/test": "^1.49.0", From b4b37370cdca4922a656ec6402b98c110e1f8c37 Mon Sep 17 00:00:00 2001 From: Sybren W Date: Sun, 8 Dec 2024 00:04:03 +0100 Subject: [PATCH 11/38] test(avatar): add a11y violations pw tests --- .../_tests/avatar/avatar.pw.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts b/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts index d602ce476b..2762dd5031 100644 --- a/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts +++ b/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts @@ -1,3 +1,4 @@ +import AxeBuilder from '@axe-core/playwright' import { expect, test } from '@playwright/test' import { gotoStory } from '../utils' @@ -6,12 +7,25 @@ test.describe('basic variant', () => { await gotoStory('avatar', 'basic', page) await page.getByAltText('avatar').waitFor() + expect(page.getByAltText('avatar')).toHaveAttribute( 'src', 'https://avatars.githubusercontent.com/u/1846056?v=4', ) + expect(page).toHaveScreenshot() }) + test('has no a11y violations', async ({ page }) => { + await gotoStory('avatar', 'basic', page) + + await page.getByAltText('avatar').waitFor() + + const accessibilityScanResults = await new AxeBuilder({ page }) + .include('[data-scope="avatar"][data-part="root"]') + .analyze() + + expect(accessibilityScanResults.violations).toEqual([]) + }) }) test.describe('closed variant', () => { @@ -25,6 +39,16 @@ test.describe('closed variant', () => { ) expect(page).toHaveScreenshot() }) + test('has no a11y violations', async ({ page }) => { + await gotoStory('avatar', 'closed', page) + await page.getByAltText('Christian').waitFor() + + const accessibilityScanResults = await new AxeBuilder({ page }) + .include('[data-scope="avatar"][data-part="root"]') + .analyze() + + expect(accessibilityScanResults.violations).toEqual([]) + }) }) test.describe('root-provided variant', () => { @@ -38,4 +62,15 @@ test.describe('root-provided variant', () => { ) expect(page).toHaveScreenshot() }) + test('has no a11y violations', async ({ page }) => { + await gotoStory('avatar', 'root-provider', page) + + await page.getByAltText('avatar').waitFor() + + const accessibilityScanResults = await new AxeBuilder({ page }) + .include('[data-scope="avatar"][data-part="root"]') + .analyze() + + expect(accessibilityScanResults.violations).toEqual([]) + }) }) From 0aff18d68fdf25cfdabf08ac72e65eb649a75d4c Mon Sep 17 00:00:00 2001 From: Sybren W Date: Sun, 8 Dec 2024 00:10:40 +0100 Subject: [PATCH 12/38] test(avatar): add attach a11y scan results in pw tests --- .../_tests/avatar/avatar.pw.test.ts | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts b/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts index 2762dd5031..a1a22f45ba 100644 --- a/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts +++ b/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts @@ -15,7 +15,7 @@ test.describe('basic variant', () => { expect(page).toHaveScreenshot() }) - test('has no a11y violations', async ({ page }) => { + test('has no a11y violations', async ({ page }, testInfo) => { await gotoStory('avatar', 'basic', page) await page.getByAltText('avatar').waitFor() @@ -24,6 +24,11 @@ test.describe('basic variant', () => { .include('[data-scope="avatar"][data-part="root"]') .analyze() + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json', + }) + expect(accessibilityScanResults.violations).toEqual([]) }) }) @@ -39,7 +44,7 @@ test.describe('closed variant', () => { ) expect(page).toHaveScreenshot() }) - test('has no a11y violations', async ({ page }) => { + test('has no a11y violations', async ({ page }, testInfo) => { await gotoStory('avatar', 'closed', page) await page.getByAltText('Christian').waitFor() @@ -47,6 +52,11 @@ test.describe('closed variant', () => { .include('[data-scope="avatar"][data-part="root"]') .analyze() + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json', + }) + expect(accessibilityScanResults.violations).toEqual([]) }) }) @@ -62,7 +72,7 @@ test.describe('root-provided variant', () => { ) expect(page).toHaveScreenshot() }) - test('has no a11y violations', async ({ page }) => { + test('has no a11y violations', async ({ page }, testInfo) => { await gotoStory('avatar', 'root-provider', page) await page.getByAltText('avatar').waitFor() @@ -71,6 +81,11 @@ test.describe('root-provided variant', () => { .include('[data-scope="avatar"][data-part="root"]') .analyze() + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json', + }) + expect(accessibilityScanResults.violations).toEqual([]) }) }) From 28df34611e223de1a3e917d7ea1dddaf0d17174e Mon Sep 17 00:00:00 2001 From: Sybren W Date: Sun, 8 Dec 2024 00:10:52 +0100 Subject: [PATCH 13/38] refactor(pw): remove example tests --- .../vue/src/components/_tests/example.spec.ts | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 packages/vue/src/components/_tests/example.spec.ts diff --git a/packages/vue/src/components/_tests/example.spec.ts b/packages/vue/src/components/_tests/example.spec.ts deleted file mode 100644 index e92ea0f20d..0000000000 --- a/packages/vue/src/components/_tests/example.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { expect, test } from '@playwright/test' - -test('has title', async ({ page }) => { - await page.goto('https://playwright.dev/') - - // Expect a title "to contain" a substring. - await expect(page).toHaveTitle(/Playwright/) -}) - -test('get started link', async ({ page }) => { - await page.goto('https://playwright.dev/') - - // Click the get started link. - await page.getByRole('link', { name: 'Get started' }).click() - - // Expects page to have a heading with the name of Installation. - await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible() -}) From 89f017bbf6a23fc6a21346f537d926cec17168f8 Mon Sep 17 00:00:00 2001 From: Sybren W Date: Sun, 8 Dec 2024 00:22:11 +0100 Subject: [PATCH 14/38] feat(playwright): add util to test a11y and attach results --- packages/vue/src/components/_tests/utils.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/vue/src/components/_tests/utils.ts b/packages/vue/src/components/_tests/utils.ts index 2e8ed8f848..4642c21609 100644 --- a/packages/vue/src/components/_tests/utils.ts +++ b/packages/vue/src/components/_tests/utils.ts @@ -1,4 +1,5 @@ -import type { Page } from '@playwright/test' +import AxeBuilder from '@axe-core/playwright' +import type { Page, TestInfo } from '@playwright/test' export const gotoStory = async (storyId: string, variantId: string, page: Page) => { if (!storyId || !variantId) await page.goto('/') @@ -6,3 +7,20 @@ export const gotoStory = async (storyId: string, variantId: string, page: Page) // Using the sandbox to isolate the story from the rest of Histoire. await page.goto(`/__sandbox.html?storyId=${storyId}&variantId=${variantId}`) } + +export const testA11yWithAttachedResults = async ( + page: Page, + testInfo: TestInfo, + componentName: string, +) => { + const accessibilityScanResults = await new AxeBuilder({ page }) + .include(`[data-scope="${componentName}"][data-part="root"]`) + .analyze() + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json', + }) + + return accessibilityScanResults +} From effaaa3e587cbb00f17ff6622de5367cc2b8d9e4 Mon Sep 17 00:00:00 2001 From: Sybren W Date: Sun, 8 Dec 2024 00:22:59 +0100 Subject: [PATCH 15/38] test(avatar): refactor to use the util fn in pw tests --- .../_tests/avatar/avatar.pw.test.ts | 61 ++++--------------- 1 file changed, 13 insertions(+), 48 deletions(-) diff --git a/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts b/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts index a1a22f45ba..951d346ed1 100644 --- a/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts +++ b/packages/vue/src/components/_tests/avatar/avatar.pw.test.ts @@ -1,43 +1,30 @@ -import AxeBuilder from '@axe-core/playwright' import { expect, test } from '@playwright/test' -import { gotoStory } from '../utils' +import { gotoStory, testA11yWithAttachedResults } from '../utils' test.describe('basic variant', () => { - test('has avatar image', async ({ page }) => { + test.beforeEach(async ({ page }) => { await gotoStory('avatar', 'basic', page) - await page.getByAltText('avatar').waitFor() - + }) + test('has avatar image', async ({ page }) => { expect(page.getByAltText('avatar')).toHaveAttribute( 'src', 'https://avatars.githubusercontent.com/u/1846056?v=4', ) - expect(page).toHaveScreenshot() }) test('has no a11y violations', async ({ page }, testInfo) => { - await gotoStory('avatar', 'basic', page) - - await page.getByAltText('avatar').waitFor() - - const accessibilityScanResults = await new AxeBuilder({ page }) - .include('[data-scope="avatar"][data-part="root"]') - .analyze() - - await testInfo.attach('accessibility-scan-results', { - body: JSON.stringify(accessibilityScanResults, null, 2), - contentType: 'application/json', - }) - + const accessibilityScanResults = await testA11yWithAttachedResults(page, testInfo, 'avatar') expect(accessibilityScanResults.violations).toEqual([]) }) }) test.describe('closed variant', () => { - test('displays avatar with name', async ({ page }) => { + test.beforeEach(async ({ page }) => { await gotoStory('avatar', 'closed', page) - await page.getByAltText('Christian').waitFor() + }) + test('displays avatar with name', async ({ page }) => { expect(page.getByAltText('Christian')).toHaveAttribute( 'src', 'https://avatars.githubusercontent.com/u/1846056?v=4', @@ -45,27 +32,17 @@ test.describe('closed variant', () => { expect(page).toHaveScreenshot() }) test('has no a11y violations', async ({ page }, testInfo) => { - await gotoStory('avatar', 'closed', page) - await page.getByAltText('Christian').waitFor() - - const accessibilityScanResults = await new AxeBuilder({ page }) - .include('[data-scope="avatar"][data-part="root"]') - .analyze() - - await testInfo.attach('accessibility-scan-results', { - body: JSON.stringify(accessibilityScanResults, null, 2), - contentType: 'application/json', - }) - + const accessibilityScanResults = await testA11yWithAttachedResults(page, testInfo, 'avatar') expect(accessibilityScanResults.violations).toEqual([]) }) }) test.describe('root-provided variant', () => { - test('has avatar image', async ({ page }) => { + test.beforeEach(async ({ page }) => { await gotoStory('avatar', 'root-provider', page) - await page.getByAltText('avatar').waitFor() + }) + test('has avatar image', async ({ page }) => { expect(page.getByAltText('avatar')).toHaveAttribute( 'src', 'https://avatars.githubusercontent.com/u/1846056?v=4', @@ -73,19 +50,7 @@ test.describe('root-provided variant', () => { expect(page).toHaveScreenshot() }) test('has no a11y violations', async ({ page }, testInfo) => { - await gotoStory('avatar', 'root-provider', page) - - await page.getByAltText('avatar').waitFor() - - const accessibilityScanResults = await new AxeBuilder({ page }) - .include('[data-scope="avatar"][data-part="root"]') - .analyze() - - await testInfo.attach('accessibility-scan-results', { - body: JSON.stringify(accessibilityScanResults, null, 2), - contentType: 'application/json', - }) - + const accessibilityScanResults = await testA11yWithAttachedResults(page, testInfo, 'avatar') expect(accessibilityScanResults.violations).toEqual([]) }) }) From 7a2eb71e908d4531c141112cbb98526f51f9fced Mon Sep 17 00:00:00 2001 From: Sybren W Date: Tue, 10 Dec 2024 20:51:13 +0100 Subject: [PATCH 16/38] chore: remove unwanted changes --- .husky/_/pre-commit | 57 ------------------------------------- .husky/_/prepare-commit-msg | 57 ------------------------------------- package.json | 13 +-------- 3 files changed, 1 insertion(+), 126 deletions(-) delete mode 100755 .husky/_/pre-commit delete mode 100755 .husky/_/prepare-commit-msg diff --git a/.husky/_/pre-commit b/.husky/_/pre-commit deleted file mode 100755 index 4855f61246..0000000000 --- a/.husky/_/pre-commit +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -if [ "$LEFTHOOK_VERBOSE" = "1" -o "$LEFTHOOK_VERBOSE" = "true" ]; then - set -x -fi - -if [ "$LEFTHOOK" = "0" ]; then - exit 0 -fi - -call_lefthook() -{ - if test -n "$LEFTHOOK_BIN" - then - "$LEFTHOOK_BIN" "$@" - elif lefthook -h >/dev/null 2>&1 - then - lefthook "$@" - else - dir="$(git rev-parse --show-toplevel)" - osArch=$(uname | tr '[:upper:]' '[:lower:]') - cpuArch=$(uname -m | sed 's/aarch64/arm64/;s/x86_64/x64/') - if test -f "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" - then - "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" "$@" - elif test -f "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" - then - "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" "$@" - elif test -f "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" - then - "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" "$@" - elif test -f "$dir/node_modules/lefthook/bin/index.js" - then - "$dir/node_modules/lefthook/bin/index.js" "$@" - - elif bundle exec lefthook -h >/dev/null 2>&1 - then - bundle exec lefthook "$@" - elif yarn lefthook -h >/dev/null 2>&1 - then - yarn lefthook "$@" - elif pnpm lefthook -h >/dev/null 2>&1 - then - pnpm lefthook "$@" - elif swift package plugin lefthook >/dev/null 2>&1 - then - swift package --disable-sandbox plugin lefthook "$@" - elif command -v mint >/dev/null 2>&1 - then - mint run csjones/lefthook-plugin "$@" - else - echo "Can't find lefthook in PATH" - fi - fi -} - -call_lefthook run "pre-commit" "$@" diff --git a/.husky/_/prepare-commit-msg b/.husky/_/prepare-commit-msg deleted file mode 100755 index 2655902bce..0000000000 --- a/.husky/_/prepare-commit-msg +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -if [ "$LEFTHOOK_VERBOSE" = "1" -o "$LEFTHOOK_VERBOSE" = "true" ]; then - set -x -fi - -if [ "$LEFTHOOK" = "0" ]; then - exit 0 -fi - -call_lefthook() -{ - if test -n "$LEFTHOOK_BIN" - then - "$LEFTHOOK_BIN" "$@" - elif lefthook -h >/dev/null 2>&1 - then - lefthook "$@" - else - dir="$(git rev-parse --show-toplevel)" - osArch=$(uname | tr '[:upper:]' '[:lower:]') - cpuArch=$(uname -m | sed 's/aarch64/arm64/;s/x86_64/x64/') - if test -f "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" - then - "$dir/node_modules/lefthook-${osArch}-${cpuArch}/bin/lefthook" "$@" - elif test -f "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" - then - "$dir/node_modules/@evilmartians/lefthook/bin/lefthook-${osArch}-${cpuArch}/lefthook" "$@" - elif test -f "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" - then - "$dir/node_modules/@evilmartians/lefthook-installer/bin/lefthook" "$@" - elif test -f "$dir/node_modules/lefthook/bin/index.js" - then - "$dir/node_modules/lefthook/bin/index.js" "$@" - - elif bundle exec lefthook -h >/dev/null 2>&1 - then - bundle exec lefthook "$@" - elif yarn lefthook -h >/dev/null 2>&1 - then - yarn lefthook "$@" - elif pnpm lefthook -h >/dev/null 2>&1 - then - pnpm lefthook "$@" - elif swift package plugin lefthook >/dev/null 2>&1 - then - swift package --disable-sandbox plugin lefthook "$@" - elif command -v mint >/dev/null 2>&1 - then - mint run csjones/lefthook-plugin "$@" - else - echo "Can't find lefthook in PATH" - fi - fi -} - -call_lefthook run "prepare-commit-msg" "$@" diff --git a/package.json b/package.json index 92b2684f66..1d8414239d 100644 --- a/package.json +++ b/package.json @@ -34,16 +34,5 @@ "vercel": "39.1.1" }, "packageManager": "bun@1.1.37", - "trustedDependencies": [ - "@ark-ui/website", - "@biomejs/biome", - "@prisma/client", - "@prisma/engines", - "@sveltejs/kit", - "esbuild", - "lefthook", - "prisma", - "root", - "sharp" - ] + "trustedDependencies": ["@ark-ui/website"] } From fd695310a5678e6095fcc96803f34d926e429f1e Mon Sep 17 00:00:00 2001 From: Sybren W Date: Thu, 26 Dec 2024 12:24:50 +0100 Subject: [PATCH 17/38] feat(ci): add github playwright flow --- .github/workflows/playwright.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/playwright.yml diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 0000000000..2261e935c0 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,27 @@ +name: Playwright Tests +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Install Playwright Browsers + run: npx playwright install --with-deps + - name: Run Playwright tests + run: npx playwright test + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 \ No newline at end of file From 568542c10973eb9b5b0c0f9fbbe9cc827bf1d9ca Mon Sep 17 00:00:00 2001 From: Sybren W Date: Thu, 26 Dec 2024 13:55:33 +0100 Subject: [PATCH 18/38] test(accordion): add playwright tests for basic variant of accordion --- packages/vue/.storybook/styles/accordion.css | 4 +- ...-first-item-content-about-React-open-1.png | Bin 0 -> 18178 bytes ...n-clicking-on-another-accordion-item-1.png | Bin 0 -> 17304 bytes .../_tests/accordion/accordion.pw.test.ts | 35 ++++++++++++++++++ .../accordion/accordion.stories.vue | 30 +++++++-------- 5 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 packages/vue/src/components/_tests/accordion/__snapshots__/chromium/basic-variant-has-first-item-content-about-React-open-1.png create mode 100644 packages/vue/src/components/_tests/accordion/__snapshots__/chromium/basic-variant-toggles-content-when-clicking-on-another-accordion-item-1.png create mode 100644 packages/vue/src/components/_tests/accordion/accordion.pw.test.ts diff --git a/packages/vue/.storybook/styles/accordion.css b/packages/vue/.storybook/styles/accordion.css index e83b9d5680..8180df7a80 100644 --- a/packages/vue/.storybook/styles/accordion.css +++ b/packages/vue/.storybook/styles/accordion.css @@ -40,8 +40,8 @@ [data-scope="accordion"][data-part="item-content"] { overflow: hidden; max-width: 400px; - background-color: cadetblue; - color:white; + background-color: #004c4c; + color: white; } [data-scope="accordion"][data-part="item-content"][data-state="open"] { diff --git a/packages/vue/src/components/_tests/accordion/__snapshots__/chromium/basic-variant-has-first-item-content-about-React-open-1.png b/packages/vue/src/components/_tests/accordion/__snapshots__/chromium/basic-variant-has-first-item-content-about-React-open-1.png new file mode 100644 index 0000000000000000000000000000000000000000..98150ca8e7512815ef6090e27c3bb2b95f117057 GIT binary patch literal 18178 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 e`Tww_(gtm*-cs#EY(kAEQ;<`>n1LQoKt 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 { + test.beforeEach(async ({ page }) => { + await gotoStory('accordion', 'basic', page) + await page.getByRole('button', { name: 'What is React?' }).waitFor() + }) + test('has first item content about React open', async ({ page }) => { + expect(page.getByRole('button', { name: 'What is React?' })).toHaveAttribute( + 'data-state', + 'open', + ) + expect(page.getByText('React is a JavaScript library for building user interfaces.')).toBeVisible() + expect(page).toHaveScreenshot() + }) + test('has no a11y violations', async ({ page }, testInfo) => { + const accessibilityScanResults = await testA11yWithAttachedResults(page, testInfo, 'accordion') + expect(accessibilityScanResults.violations).toEqual([]) + }) + test('toggles content when clicking on another accordion item', async ({ page }) => { + await page.getByRole('button', { name: 'What is Vue?' }).click() + expect(page.getByRole('button', { name: 'What is React?' })).toHaveAttribute( + 'data-state', + 'closed', + ) + expect(page.getByRole('button', { name: 'What is Vue?' })).toHaveAttribute( + 'data-state', + 'open', + ) + expect(page.getByText('React is a JavaScript library for building user interfaces.')).not.toBeVisible() + expect(page.getByText('Vue is a JavaScript library for building user interfaces.')).toBeVisible() + expect(page).toHaveScreenshot() + }) +}) \ No newline at end of file diff --git a/packages/vue/src/components/accordion/accordion.stories.vue b/packages/vue/src/components/accordion/accordion.stories.vue index a9cc0cd072..0ac640cc4a 100644 --- a/packages/vue/src/components/accordion/accordion.stories.vue +++ b/packages/vue/src/components/accordion/accordion.stories.vue @@ -15,47 +15,47 @@ import RootProvider from './examples/root-provider.vue' import Vertical from './examples/vertical.vue'