creevey 0.9.1 → 0.10.0-beta.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/chromatic.config.json +5 -0
- package/dist/client/addon/components/Addon.d.ts +1 -0
- package/dist/client/addon/components/Addon.js.map +1 -1
- package/dist/client/addon/components/Icons.d.ts +1 -0
- package/dist/client/addon/components/Icons.js.map +1 -1
- package/dist/client/addon/components/Panel.d.ts +1 -0
- package/dist/client/addon/components/Panel.js.map +1 -1
- package/dist/client/addon/components/TestSelect.d.ts +1 -0
- package/dist/client/addon/components/TestSelect.js +4 -3
- package/dist/client/addon/components/TestSelect.js.map +1 -1
- package/dist/client/addon/components/Tools.d.ts +1 -0
- package/dist/client/addon/components/Tools.js +7 -8
- package/dist/client/addon/components/Tools.js.map +1 -1
- package/dist/client/addon/controller.d.ts +1 -1
- package/dist/client/addon/controller.js.map +1 -1
- package/dist/client/addon/decorator.d.ts +1 -1
- package/dist/client/addon/manager.js +3 -2
- package/dist/client/addon/manager.js.map +1 -1
- package/dist/client/addon/preview.d.ts +1 -1
- package/dist/client/addon/withCreevey.d.ts +6 -8
- package/dist/client/addon/withCreevey.js +21 -19
- package/dist/client/addon/withCreevey.js.map +1 -1
- package/dist/client/shared/components/ImagesView/BlendView.d.ts +1 -1
- package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/ImagesView.d.ts +1 -0
- package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +1 -1
- package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SlideView.d.ts +1 -1
- package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SwapView.d.ts +1 -1
- package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
- package/dist/client/shared/components/PageFooter/PageFooter.d.ts +1 -0
- package/dist/client/shared/components/PageFooter/PageFooter.js +1 -1
- package/dist/client/shared/components/PageFooter/PageFooter.js.map +1 -1
- package/dist/client/shared/components/PageFooter/Paging.d.ts +2 -2
- package/dist/client/shared/components/PageFooter/Paging.js +8 -6
- package/dist/client/shared/components/PageFooter/Paging.js.map +1 -1
- package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
- package/dist/client/shared/components/PageHeader/PageHeader.d.ts +1 -0
- package/dist/client/shared/components/PageHeader/PageHeader.js +2 -1
- package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
- package/dist/client/shared/components/ResultsPage.d.ts +2 -2
- package/dist/client/shared/components/ResultsPage.js.map +1 -1
- package/dist/client/web/CreeveyApp.d.ts +1 -0
- package/dist/client/web/CreeveyApp.js.map +1 -1
- package/dist/client/web/CreeveyLoader.d.ts +1 -0
- package/dist/client/web/CreeveyLoader.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Checkbox.d.ts +1 -1
- package/dist/client/web/CreeveyView/SideBar/Checkbox.js +4 -4
- package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Search.d.ts +1 -0
- package/dist/client/web/CreeveyView/SideBar/Search.js +4 -4
- package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBar.d.ts +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBar.js +1 -7
- package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.d.ts +1 -0
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +5 -4
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.d.ts +1 -0
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +4 -3
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +3 -7
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +6 -5
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestLink.d.ts +1 -0
- package/dist/client/web/CreeveyView/SideBar/TestLink.js +5 -1
- package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +15 -8
- package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +5 -4
- package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Toggle.d.ts +1 -0
- package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -1
- package/dist/client/web/KeyboardEventsContext.d.ts +3 -4
- package/dist/client/web/KeyboardEventsContext.js.map +1 -1
- package/dist/client/web/assets/index-DkmZfG9C.js +591 -0
- package/dist/client/web/index.html +1 -1
- package/dist/client/web/index.js +5 -6
- package/dist/client/web/index.js.map +1 -1
- package/dist/creevey.js +21 -9
- package/dist/creevey.js.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/server/config.d.ts +1 -1
- package/dist/server/config.js +9 -5
- package/dist/server/config.js.map +1 -1
- package/dist/server/docker.d.ts +2 -2
- package/dist/server/docker.js +46 -40
- package/dist/server/docker.js.map +1 -1
- package/dist/server/index.js +54 -15
- package/dist/server/index.js.map +1 -1
- package/dist/server/master/master.d.ts +1 -5
- package/dist/server/master/master.js +3 -3
- package/dist/server/master/master.js.map +1 -1
- package/dist/server/master/pool.d.ts +2 -1
- package/dist/server/master/pool.js +13 -7
- package/dist/server/master/pool.js.map +1 -1
- package/dist/server/master/runner.d.ts +1 -1
- package/dist/server/master/runner.js +4 -2
- package/dist/server/master/runner.js.map +1 -1
- package/dist/server/master/server.js +1 -0
- package/dist/server/master/server.js.map +1 -1
- package/dist/server/master/start.d.ts +3 -0
- package/dist/server/master/{index.js → start.js} +6 -9
- package/dist/server/master/start.js.map +1 -0
- package/dist/server/messages.d.ts +4 -10
- package/dist/server/messages.js +4 -58
- package/dist/server/messages.js.map +1 -1
- package/dist/server/playwright/docker-file.d.ts +1 -0
- package/dist/server/playwright/docker-file.js +26 -0
- package/dist/server/playwright/docker-file.js.map +1 -0
- package/dist/server/playwright/docker.d.ts +1 -0
- package/dist/server/playwright/docker.js +31 -0
- package/dist/server/playwright/docker.js.map +1 -0
- package/dist/server/playwright/internal.d.ts +25 -0
- package/dist/server/playwright/internal.js +319 -0
- package/dist/server/playwright/internal.js.map +1 -0
- package/dist/server/playwright/webdriver.d.ts +16 -0
- package/dist/server/playwright/webdriver.js +105 -0
- package/dist/server/playwright/webdriver.js.map +1 -0
- package/dist/server/providers/browser.d.ts +2 -0
- package/dist/server/{storybook/providers → providers}/browser.js +6 -7
- package/dist/server/providers/browser.js.map +1 -0
- package/dist/server/providers/hybrid.d.ts +2 -0
- package/dist/server/{storybook/providers → providers}/hybrid.js +8 -8
- package/dist/server/providers/hybrid.js.map +1 -0
- package/dist/server/reporter.d.ts +26 -0
- package/dist/server/{worker/reporter.js → reporter.js} +34 -56
- package/dist/server/reporter.js.map +1 -0
- package/dist/server/selenium/internal.d.ts +31 -0
- package/dist/server/selenium/internal.js +606 -0
- package/dist/server/selenium/internal.js.map +1 -0
- package/dist/server/selenium/selenoid.js +6 -13
- package/dist/server/selenium/selenoid.js.map +1 -1
- package/dist/server/selenium/webdriver.d.ts +24 -0
- package/dist/server/selenium/webdriver.js +106 -0
- package/dist/server/selenium/webdriver.js.map +1 -0
- package/dist/server/stories.js +16 -9
- package/dist/server/stories.js.map +1 -1
- package/dist/server/telemetry.d.ts +1 -1
- package/dist/server/telemetry.js +4 -4
- package/dist/server/telemetry.js.map +1 -1
- package/dist/server/utils.d.ts +3 -4
- package/dist/server/utils.js +10 -9
- package/dist/server/utils.js.map +1 -1
- package/dist/server/webdriver.d.ts +19 -0
- package/dist/server/webdriver.js +79 -0
- package/dist/server/webdriver.js.map +1 -0
- package/dist/server/worker/chai-image.d.ts +2 -5
- package/dist/server/worker/chai-image.js +14 -102
- package/dist/server/worker/chai-image.js.map +1 -1
- package/dist/server/worker/match-image.d.ts +14 -0
- package/dist/server/worker/match-image.js +231 -0
- package/dist/server/worker/match-image.js.map +1 -0
- package/dist/server/worker/start.d.ts +2 -0
- package/dist/server/worker/start.js +258 -0
- package/dist/server/worker/start.js.map +1 -0
- package/dist/types.d.ts +127 -64
- package/dist/types.js +15 -9
- package/dist/types.js.map +1 -1
- package/package.json +108 -110
- package/src/client/addon/components/Addon.tsx +1 -1
- package/src/client/addon/components/Icons.tsx +1 -1
- package/src/client/addon/components/Panel.tsx +1 -1
- package/src/client/addon/components/TestSelect.tsx +5 -5
- package/src/client/addon/components/Tools.tsx +9 -9
- package/src/client/addon/controller.ts +1 -1
- package/src/client/addon/manager.ts +4 -4
- package/src/client/addon/withCreevey.ts +26 -28
- package/src/client/shared/components/ImagesView/BlendView.tsx +1 -1
- package/src/client/shared/components/ImagesView/ImagesView.tsx +2 -2
- package/src/client/shared/components/ImagesView/SideBySideView.tsx +1 -1
- package/src/client/shared/components/ImagesView/SlideView.tsx +1 -1
- package/src/client/shared/components/ImagesView/SwapView.tsx +1 -1
- package/src/client/shared/components/PageFooter/PageFooter.tsx +2 -2
- package/src/client/shared/components/PageFooter/Paging.tsx +13 -13
- package/src/client/shared/components/PageHeader/ImagePreview.tsx +1 -1
- package/src/client/shared/components/PageHeader/PageHeader.tsx +4 -3
- package/src/client/shared/components/ResultsPage.tsx +1 -1
- package/src/client/web/CreeveyApp.tsx +1 -1
- package/src/client/web/CreeveyLoader.tsx +1 -1
- package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +6 -7
- package/src/client/web/CreeveyView/SideBar/Search.tsx +4 -4
- package/src/client/web/CreeveyView/SideBar/SideBar.tsx +3 -10
- package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +7 -6
- package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +7 -6
- package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +8 -6
- package/src/client/web/CreeveyView/SideBar/TestLink.tsx +8 -3
- package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +18 -10
- package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +7 -10
- package/src/client/web/CreeveyView/SideBar/Toggle.tsx +1 -2
- package/src/client/web/KeyboardEventsContext.tsx +3 -4
- package/src/client/web/index.html +1 -1
- package/src/client/web/index.tsx +4 -3
- package/src/creevey.ts +25 -8
- package/src/index.ts +4 -2
- package/src/server/config.ts +12 -8
- package/src/server/docker.ts +58 -44
- package/src/server/index.ts +57 -18
- package/src/server/master/master.ts +3 -6
- package/src/server/master/pool.ts +25 -9
- package/src/server/master/runner.ts +4 -2
- package/src/server/master/server.ts +1 -0
- package/src/server/master/{index.ts → start.ts} +13 -11
- package/src/server/messages.ts +11 -75
- package/src/server/playwright/docker-file.ts +21 -0
- package/src/server/playwright/docker.ts +41 -0
- package/src/server/playwright/internal.ts +387 -0
- package/src/server/playwright/webdriver.ts +126 -0
- package/src/server/{storybook/providers → providers}/browser.ts +7 -8
- package/src/server/{storybook/providers → providers}/hybrid.ts +19 -19
- package/src/server/{worker/reporter.ts → reporter.ts} +40 -72
- package/src/server/selenium/internal.ts +785 -0
- package/src/server/selenium/selenoid.ts +12 -17
- package/src/server/selenium/webdriver.ts +136 -0
- package/src/server/stories.ts +18 -11
- package/src/server/telemetry.ts +2 -2
- package/src/server/utils.ts +9 -9
- package/src/server/webdriver.ts +127 -0
- package/src/server/worker/chai-image.ts +21 -133
- package/src/server/worker/match-image.ts +303 -0
- package/src/server/worker/start.ts +303 -0
- package/src/types.ts +162 -60
- package/dist/client/web/202.js +0 -1
- package/dist/client/web/270.js +0 -43
- package/dist/client/web/752.js +0 -1
- package/dist/client/web/main.js +0 -79
- package/dist/client/web/main.js.LICENSE.txt +0 -34
- package/dist/server/master/index.d.ts +0 -3
- package/dist/server/master/index.js.map +0 -1
- package/dist/server/selenium/browser.d.ts +0 -19
- package/dist/server/selenium/browser.js +0 -640
- package/dist/server/selenium/browser.js.map +0 -1
- package/dist/server/selenium/index.d.ts +0 -2
- package/dist/server/selenium/index.js +0 -19
- package/dist/server/selenium/index.js.map +0 -1
- package/dist/server/storybook/providers/browser.d.ts +0 -2
- package/dist/server/storybook/providers/browser.js.map +0 -1
- package/dist/server/storybook/providers/hybrid.d.ts +0 -2
- package/dist/server/storybook/providers/hybrid.js.map +0 -1
- package/dist/server/worker/helpers.d.ts +0 -8
- package/dist/server/worker/helpers.js +0 -57
- package/dist/server/worker/helpers.js.map +0 -1
- package/dist/server/worker/index.d.ts +0 -1
- package/dist/server/worker/index.js +0 -6
- package/dist/server/worker/index.js.map +0 -1
- package/dist/server/worker/reporter.d.ts +0 -8
- package/dist/server/worker/reporter.js.map +0 -1
- package/dist/server/worker/worker.d.ts +0 -4
- package/dist/server/worker/worker.js +0 -212
- package/dist/server/worker/worker.js.map +0 -1
- package/src/server/selenium/browser.ts +0 -840
- package/src/server/selenium/index.ts +0 -2
- package/src/server/worker/helpers.ts +0 -61
- package/src/server/worker/index.ts +0 -1
- package/src/server/worker/worker.ts +0 -240
- package/types/mocha.d.ts +0 -20
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "creevey",
|
3
3
|
"description": "Cross-browser screenshot testing tool for Storybook with fancy UI Runner",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.10.0-beta.0",
|
5
5
|
"type": "commonjs",
|
6
6
|
"bin": "./dist/cli.js",
|
7
7
|
"main": "./dist/index.js",
|
@@ -32,157 +32,155 @@
|
|
32
32
|
"license": "MIT",
|
33
33
|
"scripts": {
|
34
34
|
"commit": "git-cz",
|
35
|
-
"clean": "
|
36
|
-
"lint": "
|
35
|
+
"clean": "rm -rf dist",
|
36
|
+
"lint": "concurrently \"yarn lint:tsc\" \"yarn lint:eslint\" \"yarn lint:prettier\"",
|
37
37
|
"lint:tsc": "tsc --noEmit",
|
38
38
|
"lint:eslint": "eslint",
|
39
39
|
"lint:prettier": "prettier --check .",
|
40
40
|
"test": "vitest",
|
41
|
-
"start": "
|
42
|
-
"start:client": "
|
41
|
+
"start": "concurrently \"yarn start:client\" \"yarn start:storybook\" \"yarn start:creevey\"",
|
42
|
+
"start:client": "vite",
|
43
43
|
"start:storybook": "storybook dev --ci -p 6006",
|
44
44
|
"start:creevey": "yarn creevey --ui",
|
45
45
|
"creevey": "tsx ./src/cli",
|
46
46
|
"creevey:github": "yarn creevey --config .creevey/github.config.mts",
|
47
47
|
"creevey:gitlab": "yarn creevey --config .creevey/gitlab.config.mts",
|
48
48
|
"creevey:hybrid": "yarn creevey --config .creevey/hybrid.config.mts",
|
49
|
-
"fix": "
|
49
|
+
"fix": "concurrently \"yarn fix:eslint\" \"yarn fix:prettier\"",
|
50
50
|
"fix:eslint": "eslint --fix",
|
51
51
|
"fix:prettier": "prettier --write .",
|
52
52
|
"prebuild": "yarn clean && mkdir dist",
|
53
53
|
"build": "yarn prebuild && yarn build:client && yarn build:creevey && yarn postbuild",
|
54
|
-
"build:client": "
|
54
|
+
"build:client": "vite build",
|
55
55
|
"build:creevey": "tsc --build tsconfig.prod.json",
|
56
|
-
"postbuild": "
|
56
|
+
"postbuild": "cp \"scripts/dist/index.d.ts\" dist/",
|
57
57
|
"version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",
|
58
58
|
"build-storybook": "storybook build",
|
59
|
-
"chromatic": "
|
60
|
-
"prepare": "husky
|
59
|
+
"chromatic": "chromatic --project-token=chpt_80df83ca94e6fb4",
|
60
|
+
"prepare": "husky"
|
61
61
|
},
|
62
62
|
"engines": {
|
63
63
|
"node": ">=18.0"
|
64
64
|
},
|
65
|
+
"peerDependencies": {
|
66
|
+
"playwright": "*",
|
67
|
+
"selenium-webdriver": "*"
|
68
|
+
},
|
69
|
+
"peerDependenciesMeta": {
|
70
|
+
"playwright": {
|
71
|
+
"optional": true
|
72
|
+
},
|
73
|
+
"selenium-webdriver": {
|
74
|
+
"optional": true
|
75
|
+
}
|
76
|
+
},
|
65
77
|
"dependencies": {
|
66
|
-
"@koa/cors": "^
|
67
|
-
"@octokit/core": "^
|
68
|
-
"@storybook/components": "^
|
69
|
-
"@storybook/core-events": "^
|
70
|
-
"@storybook/csf": "^0.1.
|
71
|
-
"@storybook/
|
72
|
-
"@storybook/
|
73
|
-
"@storybook/
|
74
|
-
"@
|
78
|
+
"@koa/cors": "^5.0.0",
|
79
|
+
"@octokit/core": "^6.1.2",
|
80
|
+
"@storybook/components": "^8.4.1",
|
81
|
+
"@storybook/core-events": "^8.4.1",
|
82
|
+
"@storybook/csf": "^0.1.11",
|
83
|
+
"@storybook/icons": "^1.2.12",
|
84
|
+
"@storybook/manager-api": "^8.4.1",
|
85
|
+
"@storybook/preview-api": "^8.4.1",
|
86
|
+
"@storybook/theming": "^8.4.1",
|
87
|
+
"@storybook/types": "^8.4.1",
|
88
|
+
"@types/chai": "^4.3.20",
|
75
89
|
"@types/dockerode": "^3.3.31",
|
76
|
-
"@types/
|
77
|
-
"@types/koa": "^
|
78
|
-
"@types/koa-
|
79
|
-
"@types/koa-
|
80
|
-
"@types/
|
81
|
-
"@types/
|
82
|
-
"@types/
|
83
|
-
"@types/
|
84
|
-
"@types/
|
85
|
-
"@types/
|
86
|
-
"@types/
|
87
|
-
"@types/
|
88
|
-
"@types/
|
89
|
-
"@types/
|
90
|
-
"@types/react-dom": "^17.0.3",
|
91
|
-
"@types/selenium-webdriver": "^4.1.26",
|
90
|
+
"@types/koa": "^2.15.0",
|
91
|
+
"@types/koa-bodyparser": "^4.3.12",
|
92
|
+
"@types/koa-mount": "^4.0.5",
|
93
|
+
"@types/koa-static": "^4.0.4",
|
94
|
+
"@types/koa__cors": "^5.0.0",
|
95
|
+
"@types/lodash": "^4.17.13",
|
96
|
+
"@types/micromatch": "^4.0.9",
|
97
|
+
"@types/minimist": "^1.2.5",
|
98
|
+
"@types/pixelmatch": "^5.2.6",
|
99
|
+
"@types/pngjs": "^6.0.5",
|
100
|
+
"@types/qs": "^6.9.16",
|
101
|
+
"@types/react": "^18.3.12",
|
102
|
+
"@types/react-dom": "^18.3.1",
|
103
|
+
"@types/selenium-webdriver": "^4.1.27",
|
92
104
|
"@types/shelljs": "^0.8.15",
|
93
|
-
"@types/
|
94
|
-
"@types/ws": "^8.5.3",
|
105
|
+
"@types/ws": "^8.5.13",
|
95
106
|
"chai": "^4.5.0",
|
96
107
|
"chalk": "^4.1.2",
|
97
|
-
"chokidar": "^
|
108
|
+
"chokidar": "^4.0.1",
|
98
109
|
"dockerode": "^4.0.2",
|
99
|
-
"find-cache-dir": "^
|
100
|
-
"
|
101
|
-
"koa
|
110
|
+
"find-cache-dir": "^5.0.0",
|
111
|
+
"get-port": "^7.1.0",
|
112
|
+
"koa": "^2.15.3",
|
113
|
+
"koa-bodyparser": "^4.4.1",
|
102
114
|
"koa-mount": "^4.0.0",
|
103
115
|
"koa-static": "^5.0.0",
|
104
116
|
"lodash": "^4.17.21",
|
105
|
-
"loglevel": "^1.
|
117
|
+
"loglevel": "^1.9.2",
|
106
118
|
"loglevel-plugin-prefix": "^0.8.4",
|
107
|
-
"micromatch": "^4.0.
|
108
|
-
"minimist": "^1.2.
|
109
|
-
"
|
110
|
-
"
|
111
|
-
"
|
112
|
-
"
|
113
|
-
"
|
114
|
-
"
|
115
|
-
"selenium-webdriver": "^4.25.0",
|
119
|
+
"micromatch": "^4.0.8",
|
120
|
+
"minimist": "^1.2.8",
|
121
|
+
"odiff-bin": "^3.1.2",
|
122
|
+
"pixelmatch": "^6.0.0",
|
123
|
+
"pngjs": "^7.0.0",
|
124
|
+
"polished": "^4.3.1",
|
125
|
+
"qs": "^6.13.0",
|
126
|
+
"semver": "^7.6.3",
|
116
127
|
"shelljs": "^0.8.5",
|
117
|
-
"
|
118
|
-
"
|
119
|
-
"
|
128
|
+
"tar-stream": "^3.1.7",
|
129
|
+
"tsx": "^4.19.2",
|
130
|
+
"uuid": "^11.0.2",
|
131
|
+
"ws": "^8.18.0",
|
132
|
+
"yocto-spinner": "^0.1.1"
|
120
133
|
},
|
121
134
|
"devDependencies": {
|
122
|
-
"@
|
123
|
-
"@
|
124
|
-
"@
|
125
|
-
"@
|
126
|
-
"@
|
127
|
-
"@storybook/
|
128
|
-
"@storybook/
|
129
|
-
"@storybook/
|
130
|
-
"@storybook/
|
131
|
-
"@storybook/
|
132
|
-
"@storybook/
|
133
|
-
"@storybook/
|
134
|
-
"@storybook/client-api": "^7.6.20",
|
135
|
-
"@storybook/client-logger": "^7.6.20",
|
136
|
-
"@storybook/core-client": "^7.6.20",
|
137
|
-
"@storybook/core-common": "^7.6.20",
|
138
|
-
"@storybook/core-server": "^7.6.20",
|
139
|
-
"@storybook/preview-web": "^7.6.20",
|
140
|
-
"@storybook/react": "^7.6.20",
|
141
|
-
"@storybook/react-vite": "^7.6.20",
|
142
|
-
"@storybook/testing-library": "^0.2.2",
|
143
|
-
"@types/cpx": "^1.5.5",
|
135
|
+
"@chromatic-com/storybook": "^3.2.2",
|
136
|
+
"@eslint/js": "^9.14.0",
|
137
|
+
"@storybook/addon-essentials": "^8.4.1",
|
138
|
+
"@storybook/addon-interactions": "^8.4.1",
|
139
|
+
"@storybook/blocks": "^8.4.1",
|
140
|
+
"@storybook/channels": "^8.4.1",
|
141
|
+
"@storybook/client-logger": "^8.4.1",
|
142
|
+
"@storybook/core-common": "^8.4.1",
|
143
|
+
"@storybook/core-server": "^8.4.1",
|
144
|
+
"@storybook/react": "^8.4.1",
|
145
|
+
"@storybook/react-vite": "^8.4.1",
|
146
|
+
"@storybook/test": "^8.4.1",
|
144
147
|
"@types/eslint": "^9.6.1",
|
145
148
|
"@types/eslint__js": "^8.42.3",
|
146
|
-
"@types/node": "^18.19.
|
147
|
-
"@types/resize-observer-browser": "^0.1.
|
148
|
-
"@types/
|
149
|
-
"
|
150
|
-
"
|
151
|
-
"
|
152
|
-
"
|
153
|
-
"
|
154
|
-
"
|
155
|
-
"
|
156
|
-
"dotenv": "^16.
|
157
|
-
"eslint": "^9.
|
149
|
+
"@types/node": "^18.19.64",
|
150
|
+
"@types/resize-observer-browser": "^0.1.11",
|
151
|
+
"@types/semver": "^7",
|
152
|
+
"@types/tar-stream": "^3.1.3",
|
153
|
+
"@types/tmp": "^0.2.6",
|
154
|
+
"@vitejs/plugin-react-swc": "^3.7.1",
|
155
|
+
"browserstack-local": "^1.5.5",
|
156
|
+
"chromatic": "^11.16.3",
|
157
|
+
"concurrently": "^9.0.1",
|
158
|
+
"conventional-changelog-cli": "^5.0.0",
|
159
|
+
"dotenv": "^16.4.5",
|
160
|
+
"eslint": "^9.14.0",
|
158
161
|
"eslint-config-prettier": "^9.1.0",
|
159
162
|
"eslint-plugin-prettier": "^5.2.1",
|
160
|
-
"eslint-plugin-react": "^7.
|
163
|
+
"eslint-plugin-react": "^7.37.2",
|
161
164
|
"eslint-plugin-react-hooks": "^5.0.0",
|
162
165
|
"git-cz": "^4.9.0",
|
163
|
-
"globals": "^15.
|
164
|
-
"husky": "^
|
165
|
-
"immer": "^
|
166
|
-
"
|
167
|
-
"lint-staged": "^13.0.3",
|
166
|
+
"globals": "^15.11.0",
|
167
|
+
"husky": "^9.1.6",
|
168
|
+
"immer": "^10.1.1",
|
169
|
+
"lint-staged": "^15.2.10",
|
168
170
|
"pinst": "^3.0.0",
|
171
|
+
"playwright-core": "^1.48.0",
|
169
172
|
"prettier": "^3.3.3",
|
170
|
-
"react": "^
|
171
|
-
"react-dom": "^
|
172
|
-
"react-is": "^
|
173
|
-
"
|
174
|
-
"
|
175
|
-
"
|
176
|
-
"
|
177
|
-
"
|
178
|
-
"
|
179
|
-
"
|
180
|
-
"
|
181
|
-
"vite": "^5.4.2",
|
182
|
-
"vitest": "^2.0.5",
|
183
|
-
"webpack": "^5.94.0",
|
184
|
-
"webpack-cli": "^5.1.4",
|
185
|
-
"webpack-dev-server": "^5.0.4"
|
173
|
+
"react": "^18.3.1",
|
174
|
+
"react-dom": "^18.3.1",
|
175
|
+
"react-is": "^18.3.1",
|
176
|
+
"selenium-webdriver": "^4.26.0",
|
177
|
+
"storybook": "^8.4.1",
|
178
|
+
"tmp": "^0.2.3",
|
179
|
+
"typescript": "^5.6.3",
|
180
|
+
"typescript-eslint": "^8.12.2",
|
181
|
+
"use-immer": "^0.10.0",
|
182
|
+
"vite": "^5.4.10",
|
183
|
+
"vitest": "^2.1.4"
|
186
184
|
},
|
187
185
|
"config": {
|
188
186
|
"commitizen": {
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { Button,
|
1
|
+
import React, { JSX } from 'react';
|
2
|
+
import { Button, TooltipLinkList, WithTooltip } from '@storybook/components';
|
3
|
+
import { MenuIcon } from '@storybook/icons';
|
3
4
|
import { styled } from '@storybook/theming';
|
4
5
|
import { TestData } from '../../../types.js';
|
5
6
|
import { getEmojiByTestStatus } from '../utils.js';
|
@@ -23,7 +24,6 @@ export default function TestSelect(props: TestSelectProps): JSX.Element {
|
|
23
24
|
<WithTooltip
|
24
25
|
trigger="click"
|
25
26
|
placement="bottom"
|
26
|
-
closeOnClick
|
27
27
|
tooltip={({ onHide }) => (
|
28
28
|
<TooltipLinkList
|
29
29
|
links={props.tests.map((x) => ({
|
@@ -39,8 +39,8 @@ export default function TestSelect(props: TestSelectProps): JSX.Element {
|
|
39
39
|
/>
|
40
40
|
)}
|
41
41
|
>
|
42
|
-
<Button outline
|
43
|
-
<
|
42
|
+
<Button size="small" variant="outline">
|
43
|
+
<MenuIcon />
|
44
44
|
{testName}
|
45
45
|
</Button>
|
46
46
|
</WithTooltip>
|
@@ -1,6 +1,7 @@
|
|
1
|
-
import React, { Fragment, useState, useEffect } from 'react';
|
1
|
+
import React, { JSX, Fragment, useState, useEffect } from 'react';
|
2
2
|
import { stringify } from 'qs';
|
3
|
-
import { IconButton,
|
3
|
+
import { IconButton, Separator } from '@storybook/components';
|
4
|
+
import { StopIcon, ShareAltIcon, PlayIcon } from '@storybook/icons';
|
4
5
|
import { styled } from '@storybook/theming';
|
5
6
|
import { ForwardIcon, NextIcon } from './Icons.js';
|
6
7
|
import { isDefined, TestData } from '../../../types.js';
|
@@ -53,7 +54,6 @@ export const Tools = ({ controller }: ToolsProps): JSX.Element | null => {
|
|
53
54
|
};
|
54
55
|
const disabled = isRunning && buttonClicked != null && buttonClicked !== type;
|
55
56
|
return (
|
56
|
-
// @ts-expect-error Fixed in https://github.com/storybookjs/storybook/pull/26623
|
57
57
|
<Button
|
58
58
|
onClick={() => {
|
59
59
|
if (isRunning) controller.onStop();
|
@@ -62,23 +62,23 @@ export const Tools = ({ controller }: ToolsProps): JSX.Element | null => {
|
|
62
62
|
title={disabled ? '' : title}
|
63
63
|
disabled={disabled}
|
64
64
|
>
|
65
|
-
{buttonClicked === type && isRunning ? <
|
65
|
+
{buttonClicked === type && isRunning ? <StopIcon /> : icon}
|
66
66
|
</Button>
|
67
67
|
);
|
68
68
|
}
|
69
69
|
|
70
70
|
return (
|
71
71
|
<Fragment>
|
72
|
-
|
73
|
-
<IconButton
|
72
|
+
<a
|
74
73
|
href={`http://localhost:${__CREEVEY_CLIENT_PORT__ ?? __CREEVEY_SERVER_PORT__ ?? 3000}/?${stringify({
|
75
74
|
testPath: getTestPath(test),
|
76
75
|
})}`}
|
77
76
|
target="_blank"
|
78
77
|
title="Show in Creevey UI"
|
78
|
+
rel="noopener noreferrer"
|
79
79
|
>
|
80
|
-
<
|
81
|
-
</
|
80
|
+
<ShareAltIcon />
|
81
|
+
</a>
|
82
82
|
<Separator />
|
83
83
|
{renderButton('RunAll', 'Run all', controller.onStartAllTests, <ForwardIcon />)}
|
84
84
|
{renderButton(
|
@@ -87,7 +87,7 @@ export const Tools = ({ controller }: ToolsProps): JSX.Element | null => {
|
|
87
87
|
controller.onStartAllStoryTests,
|
88
88
|
<NextIcon width={15} height={11} />,
|
89
89
|
)}
|
90
|
-
{renderButton('RunTest', 'Run', controller.onStart, <
|
90
|
+
{renderButton('RunTest', 'Run', controller.onStart, <PlayIcon />)}
|
91
91
|
</Fragment>
|
92
92
|
);
|
93
93
|
};
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { API } from '@storybook/api';
|
2
1
|
import { Addon_TypesEnum } from '@storybook/types';
|
3
2
|
import { SET_STORIES, STORY_RENDERED } from '@storybook/core-events';
|
4
3
|
import { denormalizeStoryParameters } from '../../shared/index.js';
|
@@ -6,6 +5,7 @@ import { CreeveyStatus, CreeveyUpdate, isDefined, TestData, TestStatus, StoriesR
|
|
6
5
|
import { initCreeveyClientApi, CreeveyClientApi } from '../shared/creeveyClientApi.js';
|
7
6
|
import { calcStatus } from '../shared/helpers.js';
|
8
7
|
import { getEmojiByTestStatus } from './utils.js';
|
8
|
+
import { API } from '@storybook/manager-api';
|
9
9
|
|
10
10
|
export const ADDON_ID = 'creevey';
|
11
11
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import {
|
3
|
-
import { addons,
|
2
|
+
import { Addon_TypesEnum } from '@storybook/types';
|
3
|
+
import { addons, API } from '@storybook/manager-api';
|
4
4
|
import { Addon } from './components/Addon.js';
|
5
5
|
import { Tools } from './components/Tools.js';
|
6
6
|
import { CreeveyController, ADDON_ID } from './controller.js';
|
@@ -16,7 +16,7 @@ async function registerCreeveyPanels(storybookApi: API): Promise<void> {
|
|
16
16
|
addons.add(`${ADDON_ID}/panel/run`, {
|
17
17
|
title: `Creevey/Run`,
|
18
18
|
match: ({ viewMode }) => !!(viewMode && /^story$/.exec(viewMode)),
|
19
|
-
type:
|
19
|
+
type: Addon_TypesEnum.TOOL,
|
20
20
|
|
21
21
|
render: () => React.createElement(Tools, { controller }),
|
22
22
|
});
|
@@ -28,7 +28,7 @@ async function registerCreeveyPanels(storybookApi: API): Promise<void> {
|
|
28
28
|
const title = controller.getTabTitle(browser);
|
29
29
|
addons.add(panelId, {
|
30
30
|
title,
|
31
|
-
type:
|
31
|
+
type: Addon_TypesEnum.PANEL,
|
32
32
|
paramKey: browser,
|
33
33
|
|
34
34
|
// NOTE key = PANEL_ID needs to correct render button in addons panel
|
@@ -1,8 +1,6 @@
|
|
1
1
|
import * as Events from '@storybook/core-events';
|
2
|
-
import type {
|
3
|
-
import
|
4
|
-
import type { StoryStore } from '@storybook/client-api';
|
5
|
-
import { makeDecorator } from '@storybook/preview-api';
|
2
|
+
import type { Renderer, StoryContextForEnhancers } from '@storybook/csf';
|
3
|
+
import { makeDecorator, PreviewWeb, StoryStore } from '@storybook/preview-api';
|
6
4
|
import { Channel } from '@storybook/channels';
|
7
5
|
import { CaptureOptions, CreeveyStoryParams, isObject, noop, StoriesRaw, StorybookGlobals } from '../../types.js';
|
8
6
|
import { serializeRawStories } from '../../shared/index.js';
|
@@ -17,16 +15,15 @@ declare global {
|
|
17
15
|
__CREEVEY_SELECT_STORY__: (
|
18
16
|
storyId: string,
|
19
17
|
shouldWaitForReady: boolean,
|
20
|
-
|
21
|
-
) => Promise<void>;
|
18
|
+
) => Promise<[error?: string | null, isCaptureCalled?: boolean]>;
|
22
19
|
__CREEVEY_UPDATE_GLOBALS__: (globals: StorybookGlobals) => void;
|
23
20
|
__CREEVEY_INSERT_IGNORE_STYLES__: (ignoreElements: string[]) => HTMLStyleElement;
|
24
21
|
__CREEVEY_REMOVE_IGNORE_STYLES__: (ignoreStyles: HTMLStyleElement) => void;
|
25
|
-
__CREEVEY_HAS_PLAY_COMPLETED_YET__: (
|
22
|
+
__CREEVEY_HAS_PLAY_COMPLETED_YET__: () => Promise<boolean>;
|
26
23
|
__CREEVEY_SET_READY_FOR_CAPTURE__?: () => void;
|
27
24
|
__STORYBOOK_ADDONS_CHANNEL__: Channel;
|
28
|
-
__STORYBOOK_STORY_STORE__: StoryStore<
|
29
|
-
__STORYBOOK_PREVIEW__: PreviewWeb<
|
25
|
+
__STORYBOOK_STORY_STORE__: StoryStore<Renderer>;
|
26
|
+
__STORYBOOK_PREVIEW__: PreviewWeb<Renderer>;
|
30
27
|
}
|
31
28
|
}
|
32
29
|
|
@@ -174,8 +171,7 @@ export function withCreevey(): ReturnType<typeof makeDecorator> {
|
|
174
171
|
async function selectStory(
|
175
172
|
storyId: string,
|
176
173
|
shouldWaitForReady: boolean,
|
177
|
-
|
178
|
-
): Promise<void> {
|
174
|
+
): Promise<[error?: string | null, isCaptureCalled?: boolean]> {
|
179
175
|
const currentStory = window.__STORYBOOK_PREVIEW__.currentSelection?.storyId ?? '';
|
180
176
|
|
181
177
|
if (!isAnimationDisabled) disableAnimation();
|
@@ -205,7 +201,7 @@ export function withCreevey(): ReturnType<typeof makeDecorator> {
|
|
205
201
|
})(),
|
206
202
|
errorPromise,
|
207
203
|
]);
|
208
|
-
|
204
|
+
return [null, isCaptureCalled];
|
209
205
|
} catch (reason) {
|
210
206
|
// NOTE Event `STORY_THREW_EXCEPTION` triggered only in react and vue frameworks and return Error instance
|
211
207
|
// NOTE Event `STORY_ERRORED` return error-like object without `name` field
|
@@ -215,7 +211,7 @@ export function withCreevey(): ReturnType<typeof makeDecorator> {
|
|
215
211
|
: isObject(reason)
|
216
212
|
? `${reason.message as string}\n ${reason.stack as string}`
|
217
213
|
: (reason as string);
|
218
|
-
|
214
|
+
return [errorMessage];
|
219
215
|
} finally {
|
220
216
|
renderPromise.cancel();
|
221
217
|
errorPromise.cancel();
|
@@ -251,21 +247,23 @@ export function withCreevey(): ReturnType<typeof makeDecorator> {
|
|
251
247
|
ignoreStyles.parentNode?.removeChild(ignoreStyles);
|
252
248
|
}
|
253
249
|
|
254
|
-
function hasPlayCompletedYet(
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
250
|
+
function hasPlayCompletedYet(): Promise<boolean> {
|
251
|
+
return new Promise<boolean>((resolve) => {
|
252
|
+
creeveyReady();
|
253
|
+
let isCaptureCalled = false;
|
254
|
+
let isPlayCompleted = false;
|
255
|
+
|
256
|
+
const channel = addonsChannel();
|
257
|
+
void waitForStoryRendered(channel).then(() => {
|
258
|
+
if (isCaptureCalled) return;
|
259
|
+
isPlayCompleted = true;
|
260
|
+
resolve(true);
|
261
|
+
});
|
262
|
+
void waitForCaptureCall().then(() => {
|
263
|
+
if (isPlayCompleted) return;
|
264
|
+
isCaptureCalled = true;
|
265
|
+
resolve(false);
|
266
|
+
});
|
269
267
|
});
|
270
268
|
}
|
271
269
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
1
|
+
import React, { JSX, useEffect, useRef } from 'react';
|
2
2
|
import { styled, withTheme } from '@storybook/theming';
|
3
3
|
import { ViewPropsWithTheme, getBorderColor, themeBorderColors } from './common.js';
|
4
4
|
import { useApplyScale, useCalcScale, useLoadImages } from '../../helpers.js';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { FunctionComponent } from 'react';
|
1
|
+
import React, { JSX, FunctionComponent } from 'react';
|
2
2
|
import { styled, withTheme } from '@storybook/theming';
|
3
3
|
import { SideBySideView } from './SideBySideView.js';
|
4
4
|
import { SwapView } from './SwapView.js';
|
@@ -14,7 +14,7 @@ interface ImagesViewProps {
|
|
14
14
|
mode: ImagesViewMode;
|
15
15
|
}
|
16
16
|
|
17
|
-
const views:
|
17
|
+
const views: Record<ImagesViewMode, FunctionComponent<ViewProps>> = {
|
18
18
|
'side-by-side': SideBySideView,
|
19
19
|
swap: SwapView,
|
20
20
|
slide: SlideView,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
1
|
+
import React, { JSX, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
2
2
|
import { Loader } from '@storybook/components';
|
3
3
|
import { styled, withTheme } from '@storybook/theming';
|
4
4
|
import { ViewPropsWithTheme, getBorderColor, themeBorderColors } from './common.js';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
1
|
+
import React, { JSX, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
2
2
|
import { Loader } from '@storybook/components';
|
3
3
|
import { styled, withTheme } from '@storybook/theming';
|
4
4
|
import { getBorderColor, themeBorderColors, ViewPropsWithTheme } from './common.js';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
1
|
+
import React, { JSX, useCallback, useEffect, useRef, useState } from 'react';
|
2
2
|
import { Loader } from '@storybook/components';
|
3
3
|
import { styled, withTheme } from '@storybook/theming';
|
4
4
|
import { ViewPropsWithTheme, getBorderColor, themeBorderColors } from './common.js';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React from 'react';
|
1
|
+
import React, { JSX } from 'react';
|
2
2
|
import { styled, withTheme } from '@storybook/theming';
|
3
3
|
import { Paging } from './Paging.js';
|
4
4
|
|
@@ -20,7 +20,7 @@ const Container = withTheme(
|
|
20
20
|
export function PageFooter({ retriesCount, retry, onRetryChange }: PageFooterProps): JSX.Element {
|
21
21
|
return (
|
22
22
|
<Container>
|
23
|
-
<Paging activePage={retry} onPageChange={onRetryChange} pagesCount={retriesCount} />
|
23
|
+
<Paging activePage={`${retry}`} onPageChange={onRetryChange} pagesCount={retriesCount} />
|
24
24
|
</Container>
|
25
25
|
);
|
26
26
|
}
|