creevey 0.10.0-beta.8 → 0.10.0-rc.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/AUTHORS +2 -0
- package/CHANGELOG.md +281 -0
- package/README.md +19 -41
- package/dist/client/addon/components/Addon.js +18 -8
- package/dist/client/addon/components/Addon.js.map +1 -1
- package/dist/client/addon/components/Panel.js +4 -4
- package/dist/client/addon/components/Panel.js.map +1 -1
- package/dist/client/addon/components/TestSelect.js +2 -2
- package/dist/client/addon/components/TestSelect.js.map +1 -1
- package/dist/client/addon/components/Tools.js +19 -9
- 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 +3 -3
- package/dist/client/addon/controller.js.map +1 -1
- package/dist/client/addon/decorator.d.ts +1 -1
- package/dist/client/addon/makeDecorator.d.ts +9 -0
- package/dist/client/addon/makeDecorator.js +48 -0
- package/dist/client/addon/makeDecorator.js.map +1 -0
- package/dist/client/addon/manager.js +38 -39
- package/dist/client/addon/manager.js.map +1 -1
- package/dist/client/addon/preset.d.ts +0 -1
- package/dist/client/addon/preset.js +3 -2
- package/dist/client/addon/preset.js.map +1 -1
- package/dist/client/addon/preview.d.ts +1 -1
- package/dist/client/addon/withCreevey.d.ts +5 -3
- package/dist/client/addon/withCreevey.js +14 -21
- package/dist/client/addon/withCreevey.js.map +1 -1
- package/dist/client/shared/components/ImagesView/BlendView.d.ts +2 -2
- package/dist/client/shared/components/ImagesView/BlendView.js +18 -8
- package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/ImagesView.js +1 -1
- package/dist/client/shared/components/ImagesView/ImagesView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SideBySideView.d.ts +2 -2
- package/dist/client/shared/components/ImagesView/SideBySideView.js +19 -9
- package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SlideView.d.ts +2 -2
- package/dist/client/shared/components/ImagesView/SlideView.js +19 -9
- package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SwapView.d.ts +2 -2
- package/dist/client/shared/components/ImagesView/SwapView.js +31 -9
- package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/common.d.ts +1 -1
- 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.js +1 -1
- package/dist/client/shared/components/PageFooter/Paging.js.map +1 -1
- package/dist/client/shared/components/PageHeader/ImagePreview.d.ts +2 -2
- package/dist/client/shared/components/PageHeader/ImagePreview.js +2 -1
- package/dist/client/shared/components/PageHeader/ImagePreview.js.map +1 -1
- package/dist/client/shared/components/PageHeader/PageHeader.js +34 -13
- 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 +45 -15
- package/dist/client/shared/components/ResultsPage.js.map +1 -1
- package/dist/client/shared/creeveyClientApi.js +18 -1
- package/dist/client/shared/creeveyClientApi.js.map +1 -1
- package/dist/client/shared/helpers.d.ts +1 -3
- package/dist/client/shared/helpers.js +4 -19
- package/dist/client/shared/helpers.js.map +1 -1
- package/dist/client/web/CreeveyApp.d.ts +1 -0
- package/dist/client/web/CreeveyApp.js +44 -15
- package/dist/client/web/CreeveyApp.js.map +1 -1
- package/dist/client/web/CreeveyContext.d.ts +6 -0
- package/dist/client/web/CreeveyContext.js +21 -7
- package/dist/client/web/CreeveyContext.js.map +1 -1
- package/dist/client/web/CreeveyLoader.d.ts +1 -1
- package/dist/client/web/CreeveyLoader.js +3 -3
- package/dist/client/web/CreeveyLoader.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Checkbox.d.ts +4 -4
- package/dist/client/web/CreeveyView/SideBar/Checkbox.js +36 -6
- package/dist/client/web/CreeveyView/SideBar/Checkbox.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Search.js +20 -10
- package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBar.js +26 -12
- package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +67 -13
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +32 -12
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.d.ts +6 -6
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +20 -13
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestLink.js +20 -13
- package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.d.ts +2 -2
- package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js +2 -2
- package/dist/client/web/CreeveyView/SideBar/TestStatusIcon.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestsStatus.d.ts +2 -2
- package/dist/client/web/CreeveyView/SideBar/TestsStatus.js +3 -2
- package/dist/client/web/CreeveyView/SideBar/TestsStatus.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Toggle.js +1 -1
- package/dist/client/web/CreeveyView/SideBar/Toggle.js.map +1 -1
- package/dist/client/web/KeyboardEventsContext.d.ts +1 -8
- package/dist/client/web/KeyboardEventsContext.js +79 -64
- package/dist/client/web/KeyboardEventsContext.js.map +1 -1
- package/dist/client/web/assets/index-CtSq3IhG.js +518 -0
- package/dist/client/web/index.html +1 -1
- package/dist/client/web/index.js +26 -11
- package/dist/client/web/index.js.map +1 -1
- package/dist/client/web/themes.d.ts +2 -0
- package/dist/client/web/themes.js +22 -0
- package/dist/client/web/themes.js.map +1 -0
- package/dist/creevey.d.ts +1 -1
- package/dist/creevey.js +122 -41
- package/dist/creevey.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/playwright/generator.d.ts +25 -0
- package/dist/playwright/generator.js +243 -0
- package/dist/playwright/generator.js.map +1 -0
- package/dist/playwright/helpers.d.ts +2 -0
- package/dist/playwright/helpers.js +29 -0
- package/dist/playwright/helpers.js.map +1 -0
- package/dist/playwright/reporter.d.ts +83 -0
- package/dist/playwright/reporter.js +334 -0
- package/dist/playwright/reporter.js.map +1 -0
- package/dist/playwright/setup.d.ts +3 -0
- package/dist/playwright/setup.js +72 -0
- package/dist/playwright/setup.js.map +1 -0
- package/dist/playwright.d.ts +1 -0
- package/dist/playwright.js +3 -1
- package/dist/playwright.js.map +1 -1
- package/dist/server/compare.d.ts +18 -0
- package/dist/server/compare.js +182 -0
- package/dist/server/compare.js.map +1 -0
- package/dist/server/config.d.ts +3 -3
- package/dist/server/config.js +75 -8
- package/dist/server/config.js.map +1 -1
- package/dist/server/connection.d.ts +3 -0
- package/dist/server/connection.js +28 -0
- package/dist/server/connection.js.map +1 -0
- package/dist/server/docker.d.ts +1 -1
- package/dist/server/docker.js +54 -32
- package/dist/server/docker.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +165 -64
- package/dist/server/index.js.map +1 -1
- package/dist/server/master/api.d.ts +11 -6
- package/dist/server/master/api.js +88 -25
- package/dist/server/master/api.js.map +1 -1
- package/dist/server/master/handlers/capture-handler.d.ts +5 -0
- package/dist/server/master/handlers/capture-handler.js +25 -0
- package/dist/server/master/handlers/capture-handler.js.map +1 -0
- package/dist/server/master/handlers/index.d.ts +4 -0
- package/dist/server/master/handlers/index.js +21 -0
- package/dist/server/master/handlers/index.js.map +1 -0
- package/dist/server/master/handlers/ping-handler.d.ts +2 -0
- package/dist/server/master/handlers/ping-handler.js +8 -0
- package/dist/server/master/handlers/ping-handler.js.map +1 -0
- package/dist/server/master/handlers/static-handler.d.ts +1 -0
- package/dist/server/master/handlers/static-handler.js +20 -0
- package/dist/server/master/handlers/static-handler.js.map +1 -0
- package/dist/server/master/handlers/stories-handler.d.ts +4 -0
- package/dist/server/master/handlers/stories-handler.js +24 -0
- package/dist/server/master/handlers/stories-handler.js.map +1 -0
- package/dist/server/master/master.js +7 -24
- package/dist/server/master/master.js.map +1 -1
- package/dist/server/master/pool.d.ts +1 -0
- package/dist/server/master/pool.js +5 -3
- package/dist/server/master/pool.js.map +1 -1
- package/dist/server/master/queue.d.ts +1 -1
- package/dist/server/master/queue.js +14 -6
- package/dist/server/master/queue.js.map +1 -1
- package/dist/server/master/runner.d.ts +6 -6
- package/dist/server/master/runner.js +98 -130
- package/dist/server/master/runner.js.map +1 -1
- package/dist/server/master/server.d.ts +1 -1
- package/dist/server/master/server.js +193 -88
- package/dist/server/master/server.js.map +1 -1
- package/dist/server/master/start.d.ts +1 -2
- package/dist/server/master/start.js +13 -29
- package/dist/server/master/start.js.map +1 -1
- package/dist/server/master/testsManager.d.ts +81 -0
- package/dist/server/master/testsManager.js +282 -0
- package/dist/server/master/testsManager.js.map +1 -0
- package/dist/server/playwright/docker-file.d.ts +1 -1
- package/dist/server/playwright/docker-file.js +17 -8
- package/dist/server/playwright/docker-file.js.map +1 -1
- package/dist/server/playwright/docker.d.ts +2 -1
- package/dist/server/playwright/docker.js +10 -2
- package/dist/server/playwright/docker.js.map +1 -1
- package/dist/server/playwright/index-source.mjs +16 -0
- package/dist/server/playwright/internal.d.ts +7 -7
- package/dist/server/playwright/internal.js +144 -84
- package/dist/server/playwright/internal.js.map +1 -1
- package/dist/server/playwright/webdriver.d.ts +3 -3
- package/dist/server/playwright/webdriver.js +0 -6
- package/dist/server/playwright/webdriver.js.map +1 -1
- package/dist/server/providers/browser.js +4 -3
- package/dist/server/providers/browser.js.map +1 -1
- package/dist/server/providers/hybrid.js +2 -2
- package/dist/server/providers/hybrid.js.map +1 -1
- package/dist/server/report.d.ts +10 -0
- package/dist/server/report.js +45 -0
- package/dist/server/report.js.map +1 -0
- package/dist/server/reporters/creevey.d.ts +7 -0
- package/dist/server/reporters/creevey.js +63 -0
- package/dist/server/reporters/creevey.js.map +1 -0
- package/dist/server/reporters/index.d.ts +2 -0
- package/dist/server/reporters/index.js +16 -0
- package/dist/server/reporters/index.js.map +1 -0
- package/dist/server/reporters/junit.d.ts +16 -0
- package/dist/server/reporters/junit.js +167 -0
- package/dist/server/reporters/junit.js.map +1 -0
- package/dist/server/reporters/teamcity.d.ts +7 -0
- package/dist/server/reporters/teamcity.js +60 -0
- package/dist/server/reporters/teamcity.js.map +1 -0
- package/dist/server/selenium/internal.d.ts +4 -4
- package/dist/server/selenium/internal.js +56 -40
- package/dist/server/selenium/internal.js.map +1 -1
- package/dist/server/selenium/selenoid.js +12 -6
- package/dist/server/selenium/selenoid.js.map +1 -1
- package/dist/server/selenium/webdriver.d.ts +3 -3
- package/dist/server/selenium/webdriver.js +4 -8
- package/dist/server/selenium/webdriver.js.map +1 -1
- package/dist/server/shutdown.d.ts +1 -0
- package/dist/server/shutdown.js +23 -0
- package/dist/server/shutdown.js.map +1 -0
- package/dist/server/stories.d.ts +0 -1
- package/dist/server/stories.js +0 -12
- package/dist/server/stories.js.map +1 -1
- package/dist/server/telemetry.js +3 -3
- package/dist/server/telemetry.js.map +1 -1
- package/dist/server/testsFiles/parser.js +45 -5
- package/dist/server/testsFiles/parser.js.map +1 -1
- package/dist/server/utils.d.ts +23 -0
- package/dist/server/utils.js +114 -15
- package/dist/server/utils.js.map +1 -1
- package/dist/server/webdriver.d.ts +1 -1
- package/dist/server/worker/context.d.ts +3 -0
- package/dist/server/worker/context.js +15 -0
- package/dist/server/worker/context.js.map +1 -0
- package/dist/server/worker/match-image.d.ts +8 -12
- package/dist/server/worker/match-image.js +11 -178
- package/dist/server/worker/match-image.js.map +1 -1
- package/dist/server/worker/start.d.ts +2 -2
- package/dist/server/worker/start.js +41 -64
- package/dist/server/worker/start.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.js +9 -7
- package/dist/shared/index.js.map +1 -1
- package/dist/types.d.ts +84 -43
- package/dist/types.js +65 -1
- package/dist/types.js.map +1 -1
- package/docs/cli.md +80 -0
- package/docs/config.md +179 -165
- package/docs/examples/playwright-reporer/playwright.config.ts +37 -0
- package/docs/migration-0.9-to-0.10.md +144 -0
- package/docs/playwright-reporter.md +357 -0
- package/docs/storybook.md +60 -0
- package/docs/tests.md +50 -45
- package/package.json +78 -83
- package/playwright.config.mts +46 -0
- package/src/client/addon/components/Addon.tsx +1 -1
- package/src/client/addon/components/Panel.tsx +4 -4
- package/src/client/addon/components/TestSelect.tsx +2 -2
- package/src/client/addon/components/Tools.tsx +2 -2
- package/src/client/addon/controller.ts +4 -4
- package/src/client/addon/makeDecorator.ts +69 -0
- package/src/client/addon/manager.ts +38 -37
- package/src/client/addon/preset.ts +2 -1
- package/src/client/addon/withCreevey.ts +16 -19
- package/src/client/shared/components/ImagesView/BlendView.tsx +1 -1
- package/src/client/shared/components/ImagesView/ImagesView.tsx +1 -1
- package/src/client/shared/components/ImagesView/SideBySideView.tsx +2 -2
- package/src/client/shared/components/ImagesView/SlideView.tsx +2 -2
- package/src/client/shared/components/ImagesView/SwapView.tsx +20 -2
- package/src/client/shared/components/ImagesView/common.ts +1 -1
- package/src/client/shared/components/PageFooter/PageFooter.tsx +1 -1
- package/src/client/shared/components/PageFooter/Paging.tsx +1 -1
- package/src/client/shared/components/PageHeader/ImagePreview.tsx +2 -1
- package/src/client/shared/components/PageHeader/PageHeader.tsx +23 -7
- package/src/client/shared/components/ResultsPage.tsx +33 -10
- package/src/client/shared/creeveyClientApi.ts +19 -1
- package/src/client/shared/helpers.ts +4 -24
- package/src/client/web/CreeveyApp.tsx +30 -9
- package/src/client/web/CreeveyContext.tsx +11 -0
- package/src/client/web/CreeveyLoader.tsx +2 -2
- package/src/client/web/CreeveyView/SideBar/Checkbox.tsx +3 -3
- package/src/client/web/CreeveyView/SideBar/Search.tsx +4 -4
- package/src/client/web/CreeveyView/SideBar/SideBar.tsx +11 -6
- package/src/client/web/CreeveyView/SideBar/SideBarFooter.tsx +48 -15
- package/src/client/web/CreeveyView/SideBar/SideBarHeader.tsx +20 -5
- package/src/client/web/CreeveyView/SideBar/SuiteLink.tsx +12 -12
- package/src/client/web/CreeveyView/SideBar/TestLink.tsx +10 -10
- package/src/client/web/CreeveyView/SideBar/TestStatusIcon.tsx +2 -2
- package/src/client/web/CreeveyView/SideBar/TestsStatus.tsx +3 -2
- package/src/client/web/CreeveyView/SideBar/Toggle.tsx +1 -1
- package/src/client/web/KeyboardEventsContext.tsx +61 -73
- package/src/client/web/index.tsx +10 -5
- package/src/client/web/themes.ts +24 -0
- package/src/creevey.ts +92 -38
- package/src/playwright/generator.ts +322 -0
- package/src/playwright/helpers.ts +31 -0
- package/src/playwright/reporter.ts +381 -0
- package/src/playwright/setup.ts +84 -0
- package/src/playwright.ts +1 -0
- package/src/server/compare.ts +260 -0
- package/src/server/config.ts +52 -9
- package/src/server/connection.ts +26 -0
- package/src/server/docker.ts +62 -34
- package/src/server/index.ts +166 -79
- package/src/server/master/api.ts +94 -28
- package/src/server/master/handlers/capture-handler.ts +20 -0
- package/src/server/master/handlers/index.ts +4 -0
- package/src/server/master/handlers/ping-handler.ts +6 -0
- package/src/server/master/handlers/static-handler.ts +16 -0
- package/src/server/master/handlers/stories-handler.ts +20 -0
- package/src/server/master/master.ts +10 -27
- package/src/server/master/pool.ts +7 -3
- package/src/server/master/queue.ts +21 -7
- package/src/server/master/runner.ts +123 -134
- package/src/server/master/server.ts +214 -101
- package/src/server/master/start.ts +19 -41
- package/src/server/master/testsManager.ts +316 -0
- package/src/server/playwright/docker-file.ts +20 -8
- package/src/server/playwright/docker.ts +16 -3
- package/src/server/playwright/index-source.mjs +16 -0
- package/src/server/playwright/internal.ts +176 -103
- package/src/server/playwright/webdriver.ts +4 -10
- package/src/server/providers/browser.ts +4 -3
- package/src/server/providers/hybrid.ts +2 -3
- package/src/server/report.ts +51 -0
- package/src/server/reporters/creevey.ts +71 -0
- package/src/server/reporters/index.ts +11 -0
- package/src/server/reporters/junit.ts +207 -0
- package/src/server/reporters/teamcity.ts +74 -0
- package/src/server/selenium/internal.ts +70 -53
- package/src/server/selenium/selenoid.ts +13 -6
- package/src/server/selenium/webdriver.ts +8 -12
- package/src/server/shutdown.ts +19 -0
- package/src/server/stories.ts +1 -12
- package/src/server/telemetry.ts +3 -3
- package/src/server/testsFiles/parser.ts +52 -4
- package/src/server/utils.ts +124 -16
- package/src/server/webdriver.ts +1 -1
- package/src/server/worker/context.ts +14 -0
- package/src/server/worker/match-image.ts +16 -248
- package/src/server/worker/start.ts +49 -79
- package/src/shared/index.ts +10 -8
- package/src/types.ts +91 -58
- package/types/global.d.ts +1 -0
- package/dist/client/web/assets/index-DB8lHlJw.js +0 -591
- package/dist/server/reporter.d.ts +0 -26
- package/dist/server/reporter.js +0 -108
- package/dist/server/reporter.js.map +0 -1
- package/dist/server/update.d.ts +0 -2
- package/dist/server/update.js +0 -53
- package/dist/server/update.js.map +0 -1
- package/src/server/reporter.ts +0 -139
- package/src/server/update.ts +0 -74
package/src/types.ts
CHANGED
@@ -1,24 +1,11 @@
|
|
1
|
-
import
|
1
|
+
import * as v from 'valibot';
|
2
2
|
import type { Worker as ClusterWorker } from 'cluster';
|
3
|
-
import type Pixelmatch from 'pixelmatch';
|
4
|
-
import type { ODiffOptions } from 'odiff-bin';
|
5
3
|
import type { expect } from 'chai';
|
6
4
|
import type EventEmitter from 'events';
|
7
|
-
import {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
export type DiffOptions = typeof Pixelmatch extends (
|
12
|
-
x1: any,
|
13
|
-
x2: any,
|
14
|
-
x3: any,
|
15
|
-
x4: any,
|
16
|
-
x5: any,
|
17
|
-
options?: infer T,
|
18
|
-
) => void
|
19
|
-
? T
|
20
|
-
: never;
|
21
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
5
|
+
import type { ODiffOptions } from 'odiff-bin';
|
6
|
+
import type { LaunchOptions } from 'playwright-core';
|
7
|
+
import type { PixelmatchOptions } from 'pixelmatch';
|
8
|
+
import type { StoryContextForEnhancers, DecoratorFunction } from 'storybook/internal/types';
|
22
9
|
|
23
10
|
export interface SetStoriesData {
|
24
11
|
v?: number;
|
@@ -102,6 +89,7 @@ export class ChromeConfig {
|
|
102
89
|
}
|
103
90
|
*/
|
104
91
|
export interface BrowserConfigObject {
|
92
|
+
// TODO Restrict browser names for playwright images
|
105
93
|
browserName: string;
|
106
94
|
// customizeBuilder?: (builder: Builder) => Builder;
|
107
95
|
limit?: number;
|
@@ -115,6 +103,10 @@ export interface BrowserConfigObject {
|
|
115
103
|
* Storybook's globals to set in a specific browser
|
116
104
|
* @see https://github.com/storybookjs/storybook/blob/v6.0.0/docs/essentials/toolbars-and-globals.md
|
117
105
|
*/
|
106
|
+
storybookGlobals?: StorybookGlobals;
|
107
|
+
/**
|
108
|
+
* @deprecated Use `storybookGlobals` instead
|
109
|
+
*/
|
118
110
|
_storybookGlobals?: StorybookGlobals;
|
119
111
|
/**
|
120
112
|
* Specify custom docker image. Used only with `useDocker == true`
|
@@ -144,7 +136,13 @@ export interface BrowserConfigObject {
|
|
144
136
|
[name: string]: unknown;
|
145
137
|
};
|
146
138
|
|
147
|
-
playwrightOptions?: Omit<LaunchOptions, 'logger'
|
139
|
+
playwrightOptions?: Omit<LaunchOptions, 'logger'> & {
|
140
|
+
trace?: {
|
141
|
+
screenshots?: boolean;
|
142
|
+
snapshots?: boolean;
|
143
|
+
sources?: boolean;
|
144
|
+
};
|
145
|
+
};
|
148
146
|
}
|
149
147
|
|
150
148
|
export type StorybookGlobals = Record<string, unknown>;
|
@@ -155,7 +153,7 @@ export type CreeveyWebdriverConstructor = new (
|
|
155
153
|
browser: string,
|
156
154
|
gridUrl: string,
|
157
155
|
config: Config,
|
158
|
-
options:
|
156
|
+
options: WorkerOptions,
|
159
157
|
) => CreeveyWebdriver;
|
160
158
|
|
161
159
|
export interface CreeveyWebdriver {
|
@@ -182,7 +180,7 @@ export interface DockerAuth {
|
|
182
180
|
}
|
183
181
|
|
184
182
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
185
|
-
export type BaseReporter = new (runner: EventEmitter, options: { reporterOptions: any }) => void;
|
183
|
+
export type BaseReporter = new (runner: EventEmitter, options: { reportDir: string; reporterOptions: any }) => void;
|
186
184
|
|
187
185
|
export interface Config {
|
188
186
|
/**
|
@@ -199,6 +197,11 @@ export interface Config {
|
|
199
197
|
* Url where storybook hosted on
|
200
198
|
*/
|
201
199
|
resolveStorybookUrl?: () => Promise<string>;
|
200
|
+
/**
|
201
|
+
* Command to automatically start Storybook if it is not running.
|
202
|
+
* For example, `npm run storybook` or `yarn storybook` etc.
|
203
|
+
*/
|
204
|
+
storybookAutorunCmd?: string;
|
202
205
|
/**
|
203
206
|
* Absolute path to directory with reference images
|
204
207
|
* @default path.join(process.cwd(), './images')
|
@@ -212,8 +215,9 @@ export interface Config {
|
|
212
215
|
/**
|
213
216
|
* Specify a custom reporter for test results. Creevey accepts only mocha-like reporters
|
214
217
|
* @optional
|
218
|
+
* @default 'creevey'
|
215
219
|
*/
|
216
|
-
reporter: BaseReporter;
|
220
|
+
reporter: BaseReporter | 'creevey' | 'teamcity' | 'junit';
|
217
221
|
/**
|
218
222
|
* Options which are used by reporter
|
219
223
|
*/
|
@@ -231,13 +235,14 @@ export interface Config {
|
|
231
235
|
testTimeout: number;
|
232
236
|
/**
|
233
237
|
* Define pixelmatch diff options
|
234
|
-
* @default { threshold: 0.
|
238
|
+
* @default { threshold: 0.1, includeAA: false }
|
235
239
|
*/
|
236
|
-
diffOptions:
|
240
|
+
diffOptions: PixelmatchOptions;
|
237
241
|
/**
|
238
|
-
*
|
242
|
+
* Define odiff diff options
|
243
|
+
* @default { threshold: 0.1, antialiasing: true }
|
239
244
|
*/
|
240
|
-
odiffOptions: ODiffOptions;
|
245
|
+
odiffOptions: ODiffOptions;
|
241
246
|
/**
|
242
247
|
* Browser capabilities
|
243
248
|
* @default { chrome: true }
|
@@ -255,20 +260,17 @@ export interface Config {
|
|
255
260
|
/**
|
256
261
|
* Creevey has two built-in stories providers.
|
257
262
|
*
|
258
|
-
* `
|
259
|
-
* This provider builds and runs storybook in nodejs env, that allows write interaction tests by using Selenium API.
|
260
|
-
* The downside is it depends from project build specific and slightly increases init time.
|
261
|
-
*
|
262
|
-
* `browserStoriesProvider` - The second one is used by default with CSFv3 storybook feature.
|
263
|
-
* It load stories from storybook which is running in browser, like storyshots or loki do it.
|
263
|
+
* `browserStoriesProvider` - Extracts stories directly from the Storybook UI. It loads stories from storybook which is running in browser, like storyshots or loki do it.
|
264
264
|
* The downside of this, you can't use interaction tests in Creevey, unless you use CSFv3.
|
265
265
|
* Where you can define `play` method for each story
|
266
266
|
*
|
267
|
+
* `hybridStoriesProvider` - Combines stories from Storybook with tests from separate files. This is the default provider used in the configuration.
|
268
|
+
*
|
267
269
|
* Usage
|
268
270
|
* ``` typescript
|
269
|
-
* import { nodejsStoriesProvider as provider } from 'creevey'
|
270
|
-
* // or
|
271
271
|
* import { browserStoriesProvider as provider } from 'creevey'
|
272
|
+
* // or
|
273
|
+
* import { hybridStoriesProvider as provider } from 'creevey'
|
272
274
|
*
|
273
275
|
* // Creevey config
|
274
276
|
* module.exports = {
|
@@ -336,26 +338,38 @@ export interface StoriesProvider {
|
|
336
338
|
|
337
339
|
export type CreeveyConfig = Partial<Config>;
|
338
340
|
|
339
|
-
export
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
341
|
+
export const OptionsSchema = v.object({
|
342
|
+
ui: v.optional(v.boolean()),
|
343
|
+
storybookStart: v.optional(v.union([v.string(), v.boolean()])),
|
344
|
+
config: v.optional(v.string()),
|
345
|
+
debug: v.optional(v.boolean()),
|
346
|
+
port: v.number(),
|
347
|
+
failFast: v.optional(v.boolean()),
|
348
|
+
reportDir: v.optional(v.string()),
|
349
|
+
screenDir: v.optional(v.string()),
|
350
|
+
storybookUrl: v.optional(v.string()),
|
351
|
+
storybookPort: v.optional(v.number()),
|
352
|
+
reporter: v.optional(v.string()),
|
353
|
+
odiff: v.optional(v.boolean()),
|
354
|
+
trace: v.optional(v.boolean()),
|
355
|
+
docker: v.optional(v.boolean()),
|
356
|
+
});
|
357
|
+
|
358
|
+
export const WorkerOptionsSchema = v.object({
|
359
|
+
browser: v.string(),
|
360
|
+
storybookUrl: v.string(),
|
361
|
+
gridUrl: v.optional(v.string()),
|
362
|
+
config: v.optional(v.string()),
|
363
|
+
debug: v.optional(v.boolean()),
|
364
|
+
trace: v.optional(v.boolean()),
|
365
|
+
reportDir: v.optional(v.string()),
|
366
|
+
screenDir: v.optional(v.string()),
|
367
|
+
odiff: v.optional(v.boolean()),
|
368
|
+
port: v.number(),
|
369
|
+
});
|
370
|
+
|
371
|
+
export type Options = v.InferOutput<typeof OptionsSchema>;
|
372
|
+
export type WorkerOptions = v.InferOutput<typeof WorkerOptionsSchema>;
|
359
373
|
|
360
374
|
export type WorkerError = 'browser' | 'test' | 'unknown';
|
361
375
|
|
@@ -403,10 +417,17 @@ export type TestStatus = 'unknown' | 'pending' | 'running' | 'failed' | 'approve
|
|
403
417
|
|
404
418
|
export interface TestResult {
|
405
419
|
status: 'failed' | 'success';
|
420
|
+
retries: number;
|
406
421
|
// TODO Remove checks `name == browser` in TestResultsView
|
407
422
|
// images?: Partial<{ [name: string]: Images }> | Images;
|
408
423
|
images?: Partial<Record<string, Images>>;
|
409
424
|
error?: string;
|
425
|
+
// Test metadata for reporting
|
426
|
+
duration?: number;
|
427
|
+
attachments?: string[];
|
428
|
+
sessionId?: string;
|
429
|
+
browserName?: string;
|
430
|
+
workerId?: number;
|
410
431
|
}
|
411
432
|
|
412
433
|
export class ImagesError extends Error {
|
@@ -441,8 +462,8 @@ export interface BaseCreeveyTestContext {
|
|
441
462
|
* @internal
|
442
463
|
*/
|
443
464
|
screenshots: { imageName?: string; screenshot: Buffer }[];
|
444
|
-
matchImage: (image: Buffer, imageName?: string) => Promise<void>;
|
445
|
-
matchImages: (images: Record<string, Buffer>) => Promise<void>;
|
465
|
+
matchImage: (image: Buffer | string, imageName?: string) => Promise<void>;
|
466
|
+
matchImages: (images: Record<string, Buffer | string>) => Promise<void>;
|
446
467
|
}
|
447
468
|
|
448
469
|
export interface CreeveyTestContext extends BaseCreeveyTestContext {
|
@@ -454,6 +475,8 @@ export interface CreeveyTestContext extends BaseCreeveyTestContext {
|
|
454
475
|
export enum TEST_EVENTS {
|
455
476
|
RUN_BEGIN = 'start',
|
456
477
|
RUN_END = 'end',
|
478
|
+
SUITE_BEGIN = 'suite',
|
479
|
+
SUITE_END = 'suite end',
|
457
480
|
TEST_BEGIN = 'test',
|
458
481
|
TEST_END = 'test end',
|
459
482
|
TEST_FAIL = 'fail',
|
@@ -478,22 +501,32 @@ export interface FakeTest {
|
|
478
501
|
title: string;
|
479
502
|
fullTitle: () => string;
|
480
503
|
titlePath: () => string[];
|
481
|
-
currentRetry: () => number;
|
504
|
+
currentRetry: () => number | undefined;
|
482
505
|
retires: () => number;
|
483
506
|
slow: () => number;
|
484
507
|
duration?: number;
|
485
508
|
state?: 'failed' | 'passed';
|
486
509
|
// NOTE > duration, > duration / 2, > 0
|
487
510
|
speed?: 'slow' | 'medium' | 'fast';
|
488
|
-
err?:
|
511
|
+
err?: string;
|
489
512
|
// NOTE: image files
|
490
513
|
attachments?: string[];
|
514
|
+
|
515
|
+
// NOTE: Creevey specific fields
|
516
|
+
creevey: {
|
517
|
+
sessionId: string;
|
518
|
+
browserName: string;
|
519
|
+
workerId: number;
|
520
|
+
willRetry: boolean;
|
521
|
+
images: Partial<Record<string, Partial<Images>>>;
|
522
|
+
};
|
491
523
|
}
|
492
524
|
|
493
525
|
export interface CreeveyStatus {
|
494
526
|
isRunning: boolean;
|
495
527
|
tests: Partial<Record<string, TestData>>;
|
496
528
|
browsers: string[];
|
529
|
+
isUpdateMode: boolean;
|
497
530
|
}
|
498
531
|
|
499
532
|
export interface CreeveyUpdate {
|