creevey 0.10.0-beta.0 → 0.10.0-beta.2
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/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/playwright.d.ts +2 -0
- package/dist/playwright.js +6 -0
- package/dist/playwright.js.map +1 -0
- package/dist/selenium.d.ts +2 -0
- package/dist/selenium.js +6 -0
- package/dist/selenium.js.map +1 -0
- package/dist/server/config.d.ts +1 -1
- package/dist/server/config.js +9 -3
- package/dist/server/config.js.map +1 -1
- package/dist/server/index.js +11 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/playwright/docker-file.js +12 -1
- package/dist/server/playwright/docker-file.js.map +1 -1
- package/dist/server/playwright/docker.d.ts +1 -1
- package/dist/server/playwright/docker.js +1 -6
- package/dist/server/playwright/docker.js.map +1 -1
- package/dist/server/playwright/webdriver.d.ts +2 -1
- package/dist/server/playwright/webdriver.js +3 -0
- package/dist/server/playwright/webdriver.js.map +1 -1
- package/dist/server/selenium/internal.d.ts +2 -1
- package/dist/server/selenium/internal.js +12 -1
- package/dist/server/selenium/internal.js.map +1 -1
- package/dist/server/selenium/webdriver.d.ts +2 -1
- package/dist/server/selenium/webdriver.js +7 -0
- package/dist/server/selenium/webdriver.js.map +1 -1
- package/dist/server/webdriver.d.ts +2 -1
- package/dist/server/webdriver.js.map +1 -1
- package/dist/server/worker/start.js +4 -26
- package/dist/server/worker/start.js.map +1 -1
- package/dist/types.d.ts +2 -10
- package/dist/types.js.map +1 -1
- package/package.json +23 -12
- package/playwright.d.ts +2 -0
- package/selenium.d.ts +2 -0
- package/src/index.ts +0 -2
- package/src/playwright.ts +1 -0
- package/src/selenium.ts +1 -0
- package/src/server/config.ts +16 -5
- package/src/server/index.ts +19 -1
- package/src/server/playwright/docker-file.ts +14 -1
- package/src/server/playwright/docker.ts +2 -12
- package/src/server/playwright/webdriver.ts +6 -1
- package/src/server/selenium/internal.ts +30 -3
- package/src/server/selenium/webdriver.ts +11 -1
- package/src/server/webdriver.ts +3 -0
- package/src/server/worker/start.ts +4 -32
- package/src/types.ts +3 -10
- package/types/playwright-context.d.ts +7 -0
- package/types/selenium-context.d.ts +7 -0
package/dist/index.js
CHANGED
@@ -14,15 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.
|
17
|
+
exports.hybridStoriesProvider = exports.browserStoriesProvider = void 0;
|
18
18
|
__exportStar(require("./types.js"), exports);
|
19
19
|
var browser_js_1 = require("./server/providers/browser.js");
|
20
20
|
Object.defineProperty(exports, "browserStoriesProvider", { enumerable: true, get: function () { return browser_js_1.loadStories; } });
|
21
21
|
var hybrid_js_1 = require("./server/providers/hybrid.js");
|
22
22
|
Object.defineProperty(exports, "hybridStoriesProvider", { enumerable: true, get: function () { return hybrid_js_1.loadStories; } });
|
23
|
-
var webdriver_js_1 = require("./server/playwright/webdriver.js");
|
24
|
-
Object.defineProperty(exports, "PlaywrightWebdriver", { enumerable: true, get: function () { return webdriver_js_1.PlaywrightWebdriver; } });
|
25
|
-
var webdriver_js_2 = require("./server/selenium/webdriver.js");
|
26
|
-
Object.defineProperty(exports, "SeleniumWebdriver", { enumerable: true, get: function () { return webdriver_js_2.SeleniumWebdriver; } });
|
27
23
|
__exportStar(require("./server/testsFiles/parser.js"), exports);
|
28
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,4DAAsF;AAA7E,oHAAA,WAAW,OAA0B;AAC9C,0DAAoF;AAA3E,kHAAA,WAAW,OAAyB;AAC7C,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,4DAAsF;AAA7E,oHAAA,WAAW,OAA0B;AAC9C,0DAAoF;AAA3E,kHAAA,WAAW,OAAyB;AAC7C,gEAA8C"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.PlaywrightWebdriver = void 0;
|
4
|
+
var webdriver_js_1 = require("./server/playwright/webdriver.js");
|
5
|
+
Object.defineProperty(exports, "PlaywrightWebdriver", { enumerable: true, get: function () { return webdriver_js_1.PlaywrightWebdriver; } });
|
6
|
+
//# sourceMappingURL=playwright.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":";;;AAAA,iEAAuE;AAA9D,mHAAA,mBAAmB,OAAA"}
|
package/dist/selenium.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.SeleniumWebdriver = void 0;
|
4
|
+
var webdriver_js_1 = require("./server/selenium/webdriver.js");
|
5
|
+
Object.defineProperty(exports, "SeleniumWebdriver", { enumerable: true, get: function () { return webdriver_js_1.SeleniumWebdriver; } });
|
6
|
+
//# sourceMappingURL=selenium.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"selenium.js","sourceRoot":"","sources":["../src/selenium.ts"],"names":[],"mappings":";;;AAAA,+DAAmE;AAA1D,iHAAA,iBAAiB,OAAA"}
|
package/dist/server/config.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
import { Config, Options } from '../types.js';
|
2
2
|
export declare const defaultBrowser = "chrome";
|
3
|
-
export declare const defaultConfig: Omit<Config, 'gridUrl' | 'testsDir' | 'tsConfig'>;
|
3
|
+
export declare const defaultConfig: Omit<Config, 'gridUrl' | 'testsDir' | 'tsConfig' | 'webdriver'>;
|
4
4
|
export declare function readConfig(options: Options): Promise<Config>;
|
package/dist/server/config.js
CHANGED
@@ -12,7 +12,7 @@ const browser_js_1 = require("./providers/browser.js");
|
|
12
12
|
const types_js_1 = require("../types.js");
|
13
13
|
const utils_js_1 = require("./utils.js");
|
14
14
|
const reporter_js_1 = require("./reporter.js");
|
15
|
-
const
|
15
|
+
const logger_js_1 = require("./logger.js");
|
16
16
|
exports.defaultBrowser = 'chrome';
|
17
17
|
exports.defaultConfig = {
|
18
18
|
disableTelemetry: false,
|
@@ -26,7 +26,6 @@ exports.defaultConfig = {
|
|
26
26
|
reportDir: path_1.default.resolve('report'),
|
27
27
|
reporter: process.env.TEAMCITY_VERSION ? reporter_js_1.TeamcityReporter : reporter_js_1.CreeveyReporter,
|
28
28
|
storiesProvider: browser_js_1.loadStories,
|
29
|
-
webdriver: webdriver_js_1.SeleniumWebdriver,
|
30
29
|
maxRetries: 0,
|
31
30
|
testTimeout: 30000,
|
32
31
|
diffOptions: { threshold: 0.05, includeAA: false },
|
@@ -71,7 +70,14 @@ async function readConfig(options) {
|
|
71
70
|
const configFileUrl = (0, url_1.pathToFileURL)(configPath).toString();
|
72
71
|
return load(configFileUrl);
|
73
72
|
});
|
74
|
-
|
73
|
+
let configData = 'default' in configModule ? configModule.default : configModule;
|
74
|
+
// NOTE In node > 18 with commonjs project and esm config with tsconfig moduleResolution nodeNext there is additional 'default'
|
75
|
+
configData = 'default' in configData ? configData.default : configData;
|
76
|
+
if (!configData.webdriver) {
|
77
|
+
const { SeleniumWebdriver } = await import('./selenium/webdriver.js');
|
78
|
+
logger_js_1.logger.warn("Creevey supports `Selenium` and `Playwright` webdrivers. For backward compatibility `Selenium` is used by default, but it might changed in the future. Please explicitly specify one of webdrivers in your Creevey's config");
|
79
|
+
configData.webdriver = SeleniumWebdriver;
|
80
|
+
}
|
75
81
|
Object.assign(userConfig, configData);
|
76
82
|
}
|
77
83
|
if (options.failFast != undefined)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
@@ -12,6 +12,8 @@ const webdriver_js_1 = require("./selenium/webdriver.js");
|
|
12
12
|
const webdriver_js_2 = require("./webdriver.js");
|
13
13
|
const utils_js_1 = require("./utils.js");
|
14
14
|
const messages_js_1 = require("./messages.js");
|
15
|
+
const docker_file_js_1 = require("./playwright/docker-file.js");
|
16
|
+
const docker_js_1 = require("./docker.js");
|
15
17
|
async function startWebdriverServer(browser, config, options) {
|
16
18
|
if (config.webdriver === webdriver_js_1.SeleniumWebdriver) {
|
17
19
|
if (cluster_1.default.isPrimary) {
|
@@ -29,14 +31,22 @@ async function startWebdriverServer(browser, config, options) {
|
|
29
31
|
}
|
30
32
|
else {
|
31
33
|
// TODO start standalone playwright server (useDocker == false)
|
34
|
+
const { default: { version }, } = await import('playwright-core/package.json', { with: { type: 'json' } });
|
32
35
|
if (cluster_1.default.isWorker) {
|
33
36
|
// TODO Re-use dockerImage
|
34
37
|
const { startPlaywrightContainer } = await import('./playwright/docker.js');
|
35
38
|
const { browserName } = config.browsers[browser];
|
36
|
-
const
|
39
|
+
const imageName = `creevey/${browserName}:v${version}`;
|
40
|
+
const host = await startPlaywrightContainer(imageName, options.debug);
|
37
41
|
return host;
|
38
42
|
}
|
39
43
|
else {
|
44
|
+
const browsers = [...new Set(Object.values(config.browsers).map((c) => c.browserName))];
|
45
|
+
await Promise.all(browsers.map(async (browserName) => {
|
46
|
+
const imageName = `creevey/${browserName}:v${version}`;
|
47
|
+
const dockerfile = (0, docker_file_js_1.playwrightDockerFile)(browserName, version);
|
48
|
+
await (0, docker_js_1.buildImage)(imageName, dockerfile);
|
49
|
+
}));
|
40
50
|
const { default: getPort } = await import('get-port');
|
41
51
|
cluster_1.default.on('message', (worker, message) => {
|
42
52
|
if (!(0, types_js_1.isWorkerMessage)(message))
|
package/dist/server/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
@@ -5,9 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.playwrightDockerFile = playwrightDockerFile;
|
7
7
|
const semver_1 = __importDefault(require("semver"));
|
8
|
+
const shelljs_1 = require("shelljs");
|
8
9
|
// TODO Support custom docker images
|
9
10
|
function playwrightDockerFile(browser, version) {
|
10
11
|
const sv = semver_1.default.coerce(version);
|
12
|
+
let npmRegistry;
|
13
|
+
try {
|
14
|
+
npmRegistry = (0, shelljs_1.exec)('npm config get registry', { silent: true }).stdout.trim();
|
15
|
+
}
|
16
|
+
catch {
|
17
|
+
/* noop */
|
18
|
+
}
|
11
19
|
return `
|
12
20
|
FROM mcr.microsoft.com/playwright:v${sv?.format() ?? version}
|
13
21
|
|
@@ -15,7 +23,10 @@ WORKDIR /creevey
|
|
15
23
|
|
16
24
|
RUN echo "{ \\"type\\": \\"module\\" }" > package.json && \\
|
17
25
|
echo "import { ${browser} as browser } from 'playwright-core';" >> index.js && \\
|
18
|
-
echo "const ws = await browser.launchServer({ port: 4444, wsPath: 'creevey' })" >> index.js &&
|
26
|
+
echo "const ws = await browser.launchServer({ port: 4444, wsPath: 'creevey' })" >> index.js && \\${npmRegistry
|
27
|
+
? `
|
28
|
+
echo "registry=${npmRegistry}" > .npmrc && \\`
|
29
|
+
: ''}
|
19
30
|
npm i playwright-core${sv ? `@${sv.format()}` : ''}
|
20
31
|
|
21
32
|
EXPOSE 4444
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"docker-file.js","sourceRoot":"","sources":["../../../src/server/playwright/docker-file.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"docker-file.js","sourceRoot":"","sources":["../../../src/server/playwright/docker-file.ts"],"names":[],"mappings":";;;;;AAIA,oDA6BC;AAjCD,oDAA4B;AAC5B,qCAA+B;AAE/B,oCAAoC;AACpC,SAAgB,oBAAoB,CAAC,OAAe,EAAE,OAAe;IACnE,MAAM,EAAE,GAAG,gBAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,WAAW,GAAG,IAAA,cAAI,EAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,UAAU;IACZ,CAAC;IAED,OAAO;qCAC4B,EAAE,EAAE,MAAM,EAAE,IAAI,OAAO;;;;;qBAKvC,OAAO;uGAEtB,WAAW;QACT,CAAC,CAAC;qBACW,WAAW,kBAAkB;QAC1C,CAAC,CAAC,EACN;2BACuB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;CAKrD,CAAC;AACF,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
export declare function startPlaywrightContainer(
|
1
|
+
export declare function startPlaywrightContainer(imageName: string, debug: boolean): Promise<string>;
|
@@ -5,12 +5,7 @@ const docker_1 = require("../docker");
|
|
5
5
|
const messages_1 = require("../messages");
|
6
6
|
const utils_1 = require("../utils");
|
7
7
|
const webdriver_1 = require("../webdriver");
|
8
|
-
|
9
|
-
async function startPlaywrightContainer(browserName, debug) {
|
10
|
-
const { default: { version }, } = await import('playwright-core/package.json', { with: { type: 'json' } });
|
11
|
-
const imageName = `creevey/${browserName}:v${version}`;
|
12
|
-
const dockerfile = (0, docker_file_1.playwrightDockerFile)(browserName, version);
|
13
|
-
await (0, docker_1.buildImage)(imageName, dockerfile);
|
8
|
+
async function startPlaywrightContainer(imageName, debug) {
|
14
9
|
const port = await new Promise((resolve) => {
|
15
10
|
(0, messages_1.subscribeOn)('worker', (message) => {
|
16
11
|
if (message.type == 'port') {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/server/playwright/docker.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/server/playwright/docker.ts"],"names":[],"mappings":";;AAKA,4DAyBC;AA9BD,sCAAqC;AACrC,0CAA6D;AAC7D,oCAA0C;AAC1C,4CAAgD;AAEzC,KAAK,UAAU,wBAAwB,CAAC,SAAiB,EAAE,KAAc;IAC9E,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACjD,IAAA,sBAAW,EAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAA,4BAAiB,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAQ,EACzB,SAAS,EACT,EAAE,EACF;QACE,YAAY,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE;QACrC,UAAU,EAAE;YACV,YAAY,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;SAC1D;KACF,EACD,KAAK,CACN,CAAC;IAEF,MAAM,OAAO,GAAG,kBAAkB,IAAI,UAAU,CAAC;IAEjD,OAAO,sBAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,4BAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5E,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Args } from '@storybook/csf';
|
2
|
-
import { Config, Options, StoriesRaw, StoryInput } from '../../types';
|
2
|
+
import { Config, Options, ServerTest, StoriesRaw, StoryInput } from '../../types';
|
3
3
|
import { CreeveyWebdriverBase } from '../webdriver';
|
4
4
|
export declare class PlaywrightWebdriver extends CreeveyWebdriverBase {
|
5
5
|
#private;
|
@@ -9,6 +9,7 @@ export declare class PlaywrightWebdriver extends CreeveyWebdriverBase {
|
|
9
9
|
openBrowser(fresh?: boolean): Promise<PlaywrightWebdriver | null>;
|
10
10
|
closeBrowser(): Promise<void>;
|
11
11
|
loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
12
|
+
afterTest(_test: ServerTest): Promise<void>;
|
12
13
|
protected takeScreenshot(captureElement: string | null, ignoreElements?: string | string[] | null): Promise<Buffer>;
|
13
14
|
protected waitForComplete(callback: (isCompleted: boolean) => void): void;
|
14
15
|
protected selectStory(id: string, waitForReady?: boolean): Promise<boolean>;
|
@@ -72,6 +72,9 @@ class PlaywrightWebdriver extends webdriver_1.CreeveyWebdriverBase {
|
|
72
72
|
}
|
73
73
|
return this.#browser.loadStoriesFromBrowser();
|
74
74
|
}
|
75
|
+
afterTest(_test) {
|
76
|
+
return Promise.resolve(undefined);
|
77
|
+
}
|
75
78
|
async takeScreenshot(captureElement, ignoreElements) {
|
76
79
|
if (!this.#browser) {
|
77
80
|
// TODO Describe the error
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Args } from '@storybook/csf';
|
2
2
|
import Logger from 'loglevel';
|
3
3
|
import { WebDriver } from 'selenium-webdriver';
|
4
|
-
import { Config, StoryInput, StoriesRaw, Options } from '../../types.js';
|
4
|
+
import { Config, StoryInput, StoriesRaw, Options, ServerTest } from '../../types.js';
|
5
5
|
export declare class InternalBrowser {
|
6
6
|
#private;
|
7
7
|
constructor(browser: WebDriver, port: number, logger: Logger.Logger);
|
@@ -12,6 +12,7 @@ export declare class InternalBrowser {
|
|
12
12
|
selectStory(id: string, waitForReady?: boolean): Promise<boolean>;
|
13
13
|
updateStoryArgs(story: StoryInput, updatedArgs: Args): Promise<void>;
|
14
14
|
loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
15
|
+
afterTest(test: ServerTest): Promise<void>;
|
15
16
|
static getBrowser(browserName: string, gridUrl: string, config: Config, options: Options): Promise<InternalBrowser | null>;
|
16
17
|
private init;
|
17
18
|
private openStorybookPage;
|
@@ -257,6 +257,17 @@ class InternalBrowser {
|
|
257
257
|
throw new Error("Can't get stories, it seems creevey or storybook API isn't available");
|
258
258
|
return stories;
|
259
259
|
}
|
260
|
+
async afterTest(test) {
|
261
|
+
if (this.#logger.getLevel() === loglevel_1.default.levels.TRACE) {
|
262
|
+
const output = [];
|
263
|
+
const types = await this.#browser.manage().logs().getAvailableLogTypes();
|
264
|
+
for (const type of types) {
|
265
|
+
const logs = await this.#browser.manage().logs().get(type);
|
266
|
+
output.push(logs.map((log) => JSON.stringify(log.toJSON(), null, 2)).join('\n'));
|
267
|
+
}
|
268
|
+
this.#logger.debug('----------', (0, utils_js_1.getTestPath)(test).join('/'), '----------\n', output.join('\n'), '\n----------------------------------------------------------------------------------------------------');
|
269
|
+
}
|
270
|
+
}
|
260
271
|
static async getBrowser(browserName, gridUrl, config, options) {
|
261
272
|
const browserConfig = config.browsers[browserName];
|
262
273
|
const { storybookUrl: address = config.storybookUrl, limit, viewport, _storybookGlobals } = browserConfig;
|
@@ -561,7 +572,7 @@ class InternalBrowser {
|
|
561
572
|
compositeImage.data[i + 3] = image.data[j + 3];
|
562
573
|
}
|
563
574
|
}
|
564
|
-
return compositeImage
|
575
|
+
return pngjs_1.PNG.sync.write(compositeImage);
|
565
576
|
}
|
566
577
|
async removeIgnoreStyles(ignoreStyles) {
|
567
578
|
if (ignoreStyles) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/server/selenium/internal.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/server/selenium/internal.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Args } from '@storybook/csf';
|
2
|
-
import { Config, StorybookGlobals, StoryInput, StoriesRaw, Options } from '../../types.js';
|
2
|
+
import { Config, StorybookGlobals, StoryInput, StoriesRaw, Options, ServerTest } from '../../types.js';
|
3
3
|
import { CreeveyWebdriverBase } from '../webdriver.js';
|
4
4
|
declare global {
|
5
5
|
interface Window {
|
@@ -17,6 +17,7 @@ export declare class SeleniumWebdriver extends CreeveyWebdriverBase {
|
|
17
17
|
openBrowser(fresh?: boolean): Promise<SeleniumWebdriver | null>;
|
18
18
|
closeBrowser(): Promise<void>;
|
19
19
|
loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
20
|
+
afterTest(test: ServerTest): Promise<void>;
|
20
21
|
protected takeScreenshot(captureElement: string | null, ignoreElements?: string | string[] | null): Promise<Buffer>;
|
21
22
|
protected waitForComplete(callback: (isCompleted: boolean) => void): void;
|
22
23
|
protected selectStory(id: string, waitForReady?: boolean): Promise<boolean>;
|
@@ -73,6 +73,13 @@ class SeleniumWebdriver extends webdriver_js_1.CreeveyWebdriverBase {
|
|
73
73
|
}
|
74
74
|
return this.#browser.loadStoriesFromBrowser();
|
75
75
|
}
|
76
|
+
afterTest(test) {
|
77
|
+
if (!this.#browser) {
|
78
|
+
// TODO Describe the error
|
79
|
+
throw new Error('Browser is not initialized');
|
80
|
+
}
|
81
|
+
return this.#browser.afterTest(test);
|
82
|
+
}
|
76
83
|
async takeScreenshot(captureElement, ignoreElements) {
|
77
84
|
if (!this.#browser) {
|
78
85
|
// TODO Describe the error
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/selenium/webdriver.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/selenium/webdriver.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import Logger from 'loglevel';
|
2
2
|
import { Args } from '@storybook/csf';
|
3
|
-
import { StoryInput, BaseCreeveyTestContext, CreeveyTestContext, StoriesRaw, CreeveyWebdriver } from '../types.js';
|
3
|
+
import { StoryInput, BaseCreeveyTestContext, CreeveyTestContext, StoriesRaw, CreeveyWebdriver, ServerTest } from '../types.js';
|
4
4
|
export declare const storybookRootID = "storybook-root";
|
5
5
|
export declare const LOCALHOST_REGEXP: RegExp;
|
6
6
|
export declare function resolveStorybookUrl(storybookUrl: string, checkUrl: (url: string) => Promise<boolean>, logger?: Logger.Logger): Promise<string>;
|
@@ -15,5 +15,6 @@ export declare abstract class CreeveyWebdriverBase implements CreeveyWebdriver {
|
|
15
15
|
abstract openBrowser(fresh?: boolean): Promise<CreeveyWebdriver | null>;
|
16
16
|
abstract closeBrowser(): Promise<void>;
|
17
17
|
abstract loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
18
|
+
abstract afterTest(test: ServerTest): Promise<void>;
|
18
19
|
switchStory(story: StoryInput, context: BaseCreeveyTestContext, logger: Logger.Logger): Promise<CreeveyTestContext>;
|
19
20
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../src/server/webdriver.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../src/server/webdriver.ts"],"names":[],"mappings":"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"}
|
@@ -8,11 +8,9 @@ const chai_1 = __importDefault(require("chai"));
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
9
9
|
const loglevel_1 = __importDefault(require("loglevel"));
|
10
10
|
const events_1 = __importDefault(require("events"));
|
11
|
-
const selenium_webdriver_1 = require("selenium-webdriver");
|
12
11
|
const types_js_1 = require("../../types.js");
|
13
12
|
const messages_js_1 = require("../messages.js");
|
14
13
|
const chai_image_js_1 = __importDefault(require("./chai-image.js"));
|
15
|
-
const webdriver_js_1 = require("../selenium/webdriver.js");
|
16
14
|
const match_image_js_1 = require("./match-image.js");
|
17
15
|
const stories_js_1 = require("../stories.js");
|
18
16
|
const logger_js_1 = require("../logger.js");
|
@@ -32,15 +30,6 @@ async function getTestsFromStories(config, browserName, webdriver) {
|
|
32
30
|
.forEach((test) => testsById.set(test.id, test));
|
33
31
|
return testsById;
|
34
32
|
}
|
35
|
-
async function outputTraceLogs(browser, test, logger) {
|
36
|
-
const output = [];
|
37
|
-
const types = await browser.manage().logs().getAvailableLogTypes();
|
38
|
-
for (const type of types) {
|
39
|
-
const logs = await browser.manage().logs().get(type);
|
40
|
-
output.push(logs.map((log) => JSON.stringify(log.toJSON(), null, 2)).join('\n'));
|
41
|
-
}
|
42
|
-
logger.debug('----------', (0, utils_js_1.getTestPath)(test).join('/'), '----------\n', output.join('\n'), '\n----------------------------------------------------------------------------------------------------');
|
43
|
-
}
|
44
33
|
function runHandler(browserName, images, error) {
|
45
34
|
// TODO How handle browser corruption?
|
46
35
|
if ((0, types_js_1.isImageError)(error)) {
|
@@ -169,16 +158,14 @@ async function start(browser, gridUrl, config, options) {
|
|
169
158
|
}
|
170
159
|
const baseContext = {
|
171
160
|
browserName: browser,
|
172
|
-
//
|
173
|
-
//
|
161
|
+
// @ts-expect-error We defined separate d.ts declarations for each webdriver
|
162
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
163
|
+
webdriver: webdriver.browser,
|
174
164
|
screenshots: [],
|
175
165
|
matchImage: matchImage,
|
176
166
|
matchImages: matchImages,
|
177
167
|
// NOTE: Deprecated
|
178
168
|
expect: chai_1.default.expect,
|
179
|
-
//TODO Move things below to the separate module
|
180
|
-
until: selenium_webdriver_1.until,
|
181
|
-
keys: selenium_webdriver_1.Key,
|
182
169
|
};
|
183
170
|
imagesContext.attachments = [];
|
184
171
|
imagesContext.testFullPath = (0, utils_js_1.getTestPath)(test);
|
@@ -233,16 +220,7 @@ async function start(browser, gridUrl, config, options) {
|
|
233
220
|
}
|
234
221
|
runner.emit(types_js_1.TEST_EVENTS.TEST_END, fakeTest);
|
235
222
|
runner.emit(types_js_1.TEST_EVENTS.RUN_END);
|
236
|
-
|
237
|
-
try {
|
238
|
-
if (webdriver instanceof webdriver_js_1.SeleniumWebdriver && webdriver.browser) {
|
239
|
-
await outputTraceLogs(webdriver.browser, test, workerLogger);
|
240
|
-
}
|
241
|
-
}
|
242
|
-
catch (_) {
|
243
|
-
/* noop */
|
244
|
-
}
|
245
|
-
}
|
223
|
+
await webdriver.afterTest(test);
|
246
224
|
runHandler(baseContext.browserName, imagesContext.images, error);
|
247
225
|
})().catch((error) => {
|
248
226
|
workerLogger.error('Unexpected error:', error);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/server/worker/start.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/server/worker/start.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
import type { StoryContextForEnhancers, DecoratorFunction } from '@storybook/csf';
|
2
|
-
import type { IKey } from 'selenium-webdriver/lib/input.js';
|
3
2
|
import type { Worker as ClusterWorker } from 'cluster';
|
4
|
-
import type { /*Builder,*/ until } from 'selenium-webdriver';
|
5
3
|
import type Pixelmatch from 'pixelmatch';
|
6
4
|
import type { ODiffOptions } from 'odiff-bin';
|
7
5
|
import type { expect } from 'chai';
|
@@ -113,6 +111,7 @@ export interface CreeveyWebdriver {
|
|
113
111
|
closeBrowser(): Promise<void>;
|
114
112
|
loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
115
113
|
switchStory(story: StoryInput, context: BaseCreeveyTestContext, logger: Logger.Logger): Promise<CreeveyTestContext>;
|
114
|
+
afterTest(test: ServerTest): Promise<void>;
|
116
115
|
}
|
117
116
|
export interface HookConfig {
|
118
117
|
before?: () => unknown;
|
@@ -380,14 +379,7 @@ export interface TestData extends TestMeta {
|
|
380
379
|
}
|
381
380
|
export interface BaseCreeveyTestContext {
|
382
381
|
browserName: string;
|
383
|
-
|
384
|
-
* @deprecated In near future Creevey will additionally support Playwright as a webdriver, so any Selenium specific things might not be available. Please import `until` explicitly
|
385
|
-
*/
|
386
|
-
until: typeof until;
|
387
|
-
/**
|
388
|
-
* @deprecated In near future Creevey will additionally support Playwright as a webdriver, so any Selenium specific things might not be available. Please import `keys` explicitly
|
389
|
-
*/
|
390
|
-
keys: IKey;
|
382
|
+
webdriver: any;
|
391
383
|
/**
|
392
384
|
* @deprecated Usually for screenshot testing you don't need other type of assertions except matching images, but if you really need it, please use external `expect` libs
|
393
385
|
*/
|
package/dist/types.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAiiBA,oBAEC;AAED,8BAEC;AAED,wBASC;AAED,4BAEC;AAED,4BAEC;AAGD,gCAEC;AAED,oCAEC;AAED,4CAEC;AAED,0CAEC;AAED,4CAEC;AAED,sCAEC;AA3MD,MAAa,WAAY,SAAQ,KAAK;IACpC,MAAM,CAA4C;CACnD;AAFD,kCAEC;AAwCD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,iCAAkB,CAAA;IAClB,iCAAkB,CAAA;AACpB,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAwGD,SAAgB,IAAI;IAClB,UAAU;AACZ,CAAC;AAED,SAAgB,SAAS,CAAI,KAA2B;IACtD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;AAED,SAAgB,MAAM,CAAC,CAA8B;IACnD,OAAO,CACL,SAAS,CAAC,CAAC,CAAC;QACZ,QAAQ,CAAC,CAAC,CAAC;QACX,IAAI,IAAI,CAAC;QACT,SAAS,IAAI,CAAC;QACd,OAAO,CAAC,CAAC,EAAE,IAAI,QAAQ;QACvB,OAAO,CAAC,CAAC,OAAO,IAAI,QAAQ,CAC7B,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,OAAO,CAAC,IAAI,QAAQ,CAAC;AAC9B,CAAC;AAED,8DAA8D;AAC9D,SAAgB,UAAU,CAAC,CAAU;IACnC,OAAO,OAAO,CAAC,IAAI,UAAU,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,WAAW,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC3D,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC;AACjD,CAAC;AAED,SAAgB,eAAe,CAAC,OAAgB;IAC9C,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;AAChE,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;AACjE,CAAC;AAED,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;AAC9D,CAAC"}
|
package/package.json
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
{
|
2
2
|
"name": "creevey",
|
3
3
|
"description": "Cross-browser screenshot testing tool for Storybook with fancy UI Runner",
|
4
|
-
"version": "0.10.0-beta.
|
4
|
+
"version": "0.10.0-beta.2",
|
5
5
|
"type": "commonjs",
|
6
|
-
"bin": "
|
6
|
+
"bin": "dist/cli.js",
|
7
7
|
"main": "./dist/index.js",
|
8
8
|
"types": "./dist/index.d.ts",
|
9
9
|
"exports": {
|
10
10
|
".": "./dist/index.js",
|
11
|
+
"./playwright": {
|
12
|
+
"default": "./dist/playwright.js",
|
13
|
+
"types": "./dist/playwright.d.ts"
|
14
|
+
},
|
15
|
+
"./selenium": {
|
16
|
+
"default": "./dist/selenium.js",
|
17
|
+
"types": "./dist/selenium.d.ts"
|
18
|
+
},
|
11
19
|
"./manager": "./dist/client/addon/manager.js",
|
12
20
|
"./preview": "./dist/client/addon/preview.js",
|
13
21
|
"./preset": "./dist/client/addon/preset.js",
|
@@ -16,7 +24,10 @@
|
|
16
24
|
"./package.json": "./package.json"
|
17
25
|
},
|
18
26
|
"author": "Dmitriy Lazarev <w@kich.dev>",
|
19
|
-
"repository":
|
27
|
+
"repository": {
|
28
|
+
"type": "git",
|
29
|
+
"url": "github.com:creevey/creevey"
|
30
|
+
},
|
20
31
|
"keywords": [
|
21
32
|
"testing",
|
22
33
|
"storybook",
|
@@ -53,7 +64,7 @@
|
|
53
64
|
"build": "yarn prebuild && yarn build:client && yarn build:creevey && yarn postbuild",
|
54
65
|
"build:client": "vite build",
|
55
66
|
"build:creevey": "tsc --build tsconfig.prod.json",
|
56
|
-
"postbuild": "cp \"scripts/dist
|
67
|
+
"postbuild": "cp \"\"scripts/dist/*.d.ts\"\" dist/",
|
57
68
|
"version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",
|
58
69
|
"build-storybook": "storybook build",
|
59
70
|
"chromatic": "chromatic --project-token=chpt_80df83ca94e6fb4",
|
@@ -77,14 +88,6 @@
|
|
77
88
|
"dependencies": {
|
78
89
|
"@koa/cors": "^5.0.0",
|
79
90
|
"@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
91
|
"@types/chai": "^4.3.20",
|
89
92
|
"@types/dockerode": "^3.3.31",
|
90
93
|
"@types/koa": "^2.15.0",
|
@@ -139,11 +142,19 @@
|
|
139
142
|
"@storybook/blocks": "^8.4.1",
|
140
143
|
"@storybook/channels": "^8.4.1",
|
141
144
|
"@storybook/client-logger": "^8.4.1",
|
145
|
+
"@storybook/components": "^8.4.1",
|
142
146
|
"@storybook/core-common": "^8.4.1",
|
147
|
+
"@storybook/core-events": "^8.4.1",
|
143
148
|
"@storybook/core-server": "^8.4.1",
|
149
|
+
"@storybook/csf": "^0.1.11",
|
150
|
+
"@storybook/icons": "^1.2.12",
|
151
|
+
"@storybook/manager-api": "^8.4.1",
|
152
|
+
"@storybook/preview-api": "^8.4.1",
|
144
153
|
"@storybook/react": "^8.4.1",
|
145
154
|
"@storybook/react-vite": "^8.4.1",
|
146
155
|
"@storybook/test": "^8.4.1",
|
156
|
+
"@storybook/theming": "^8.4.1",
|
157
|
+
"@storybook/types": "^8.4.1",
|
147
158
|
"@types/eslint": "^9.6.1",
|
148
159
|
"@types/eslint__js": "^8.42.3",
|
149
160
|
"@types/node": "^18.19.64",
|
package/playwright.d.ts
ADDED
package/selenium.d.ts
ADDED
package/src/index.ts
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
export * from './types.js';
|
2
2
|
export { loadStories as browserStoriesProvider } from './server/providers/browser.js';
|
3
3
|
export { loadStories as hybridStoriesProvider } from './server/providers/hybrid.js';
|
4
|
-
export { PlaywrightWebdriver } from './server/playwright/webdriver.js';
|
5
|
-
export { SeleniumWebdriver } from './server/selenium/webdriver.js';
|
6
4
|
export * from './server/testsFiles/parser.js';
|
@@ -0,0 +1 @@
|
|
1
|
+
export { PlaywrightWebdriver } from './server/playwright/webdriver.js';
|
package/src/selenium.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export { SeleniumWebdriver } from './server/selenium/webdriver.js';
|
package/src/server/config.ts
CHANGED
@@ -5,11 +5,11 @@ import { loadStories as browserStoriesProvider } from './providers/browser.js';
|
|
5
5
|
import { Config, BrowserConfig, BrowserConfigObject, Options, isDefined } from '../types.js';
|
6
6
|
import { configExt, loadThroughTSX } from './utils.js';
|
7
7
|
import { CreeveyReporter, TeamcityReporter } from './reporter.js';
|
8
|
-
import {
|
8
|
+
import { logger } from './logger.js';
|
9
9
|
|
10
10
|
export const defaultBrowser = 'chrome';
|
11
11
|
|
12
|
-
export const defaultConfig: Omit<Config, 'gridUrl' | 'testsDir' | 'tsConfig'> = {
|
12
|
+
export const defaultConfig: Omit<Config, 'gridUrl' | 'testsDir' | 'tsConfig' | 'webdriver'> = {
|
13
13
|
disableTelemetry: false,
|
14
14
|
useDocker: true,
|
15
15
|
dockerImage: 'aerokube/selenoid:latest-release',
|
@@ -21,7 +21,6 @@ export const defaultConfig: Omit<Config, 'gridUrl' | 'testsDir' | 'tsConfig'> =
|
|
21
21
|
reportDir: path.resolve('report'),
|
22
22
|
reporter: process.env.TEAMCITY_VERSION ? TeamcityReporter : CreeveyReporter,
|
23
23
|
storiesProvider: browserStoriesProvider,
|
24
|
-
webdriver: SeleniumWebdriver,
|
25
24
|
maxRetries: 0,
|
26
25
|
testTimeout: 30000,
|
27
26
|
diffOptions: { threshold: 0.05, includeAA: false },
|
@@ -62,11 +61,23 @@ export async function readConfig(options: Options): Promise<Config> {
|
|
62
61
|
const userConfig: typeof defaultConfig & Partial<Pick<Config, 'gridUrl' | 'storiesProvider'>> = { ...defaultConfig };
|
63
62
|
|
64
63
|
if (isDefined(configPath)) {
|
65
|
-
const configModule = await loadThroughTSX<
|
64
|
+
const configModule = await loadThroughTSX<
|
65
|
+
{ default: { default: Partial<Config> } | Partial<Config> } | Partial<Config>
|
66
|
+
>((load) => {
|
66
67
|
const configFileUrl = pathToFileURL(configPath).toString();
|
67
68
|
return load(configFileUrl);
|
68
69
|
});
|
69
|
-
|
70
|
+
let configData = 'default' in configModule ? configModule.default : configModule;
|
71
|
+
// NOTE In node > 18 with commonjs project and esm config with tsconfig moduleResolution nodeNext there is additional 'default'
|
72
|
+
configData = 'default' in configData ? configData.default : configData;
|
73
|
+
|
74
|
+
if (!configData.webdriver) {
|
75
|
+
const { SeleniumWebdriver } = await import('./selenium/webdriver.js');
|
76
|
+
logger.warn(
|
77
|
+
"Creevey supports `Selenium` and `Playwright` webdrivers. For backward compatibility `Selenium` is used by default, but it might changed in the future. Please explicitly specify one of webdrivers in your Creevey's config",
|
78
|
+
);
|
79
|
+
configData.webdriver = SeleniumWebdriver;
|
80
|
+
}
|
70
81
|
|
71
82
|
Object.assign(userConfig, configData);
|
72
83
|
}
|
package/src/server/index.ts
CHANGED
@@ -6,6 +6,8 @@ import { SeleniumWebdriver } from './selenium/webdriver.js';
|
|
6
6
|
import { LOCALHOST_REGEXP } from './webdriver.js';
|
7
7
|
import { isInsideDocker } from './utils.js';
|
8
8
|
import { sendWorkerMessage } from './messages.js';
|
9
|
+
import { playwrightDockerFile } from './playwright/docker-file.js';
|
10
|
+
import { buildImage } from './docker.js';
|
9
11
|
|
10
12
|
async function startWebdriverServer(browser: string, config: Config, options: Options): Promise<string | undefined> {
|
11
13
|
if (config.webdriver === SeleniumWebdriver) {
|
@@ -24,15 +26,31 @@ async function startWebdriverServer(browser: string, config: Config, options: Op
|
|
24
26
|
} else {
|
25
27
|
// TODO start standalone playwright server (useDocker == false)
|
26
28
|
|
29
|
+
const {
|
30
|
+
default: { version },
|
31
|
+
} = await import('playwright-core/package.json', { with: { type: 'json' } });
|
32
|
+
|
27
33
|
if (cluster.isWorker) {
|
28
34
|
// TODO Re-use dockerImage
|
29
35
|
|
30
36
|
const { startPlaywrightContainer } = await import('./playwright/docker.js');
|
31
37
|
const { browserName } = config.browsers[browser] as BrowserConfigObject;
|
32
|
-
|
38
|
+
|
39
|
+
const imageName = `creevey/${browserName}:v${version}`;
|
40
|
+
const host = await startPlaywrightContainer(imageName, options.debug);
|
33
41
|
|
34
42
|
return host;
|
35
43
|
} else {
|
44
|
+
const browsers = [...new Set(Object.values(config.browsers).map((c) => (c as BrowserConfigObject).browserName))];
|
45
|
+
await Promise.all(
|
46
|
+
browsers.map(async (browserName) => {
|
47
|
+
const imageName = `creevey/${browserName}:v${version}`;
|
48
|
+
const dockerfile = playwrightDockerFile(browserName, version);
|
49
|
+
|
50
|
+
await buildImage(imageName, dockerfile);
|
51
|
+
}),
|
52
|
+
);
|
53
|
+
|
36
54
|
const { default: getPort } = await import('get-port');
|
37
55
|
|
38
56
|
cluster.on('message', (worker, message: unknown) => {
|
@@ -1,9 +1,17 @@
|
|
1
1
|
import semver from 'semver';
|
2
|
+
import { exec } from 'shelljs';
|
2
3
|
|
3
4
|
// TODO Support custom docker images
|
4
5
|
export function playwrightDockerFile(browser: string, version: string): string {
|
5
6
|
const sv = semver.coerce(version);
|
6
7
|
|
8
|
+
let npmRegistry;
|
9
|
+
try {
|
10
|
+
npmRegistry = exec('npm config get registry', { silent: true }).stdout.trim();
|
11
|
+
} catch {
|
12
|
+
/* noop */
|
13
|
+
}
|
14
|
+
|
7
15
|
return `
|
8
16
|
FROM mcr.microsoft.com/playwright:v${sv?.format() ?? version}
|
9
17
|
|
@@ -11,7 +19,12 @@ WORKDIR /creevey
|
|
11
19
|
|
12
20
|
RUN echo "{ \\"type\\": \\"module\\" }" > package.json && \\
|
13
21
|
echo "import { ${browser} as browser } from 'playwright-core';" >> index.js && \\
|
14
|
-
echo "const ws = await browser.launchServer({ port: 4444, wsPath: 'creevey' })" >> index.js &&
|
22
|
+
echo "const ws = await browser.launchServer({ port: 4444, wsPath: 'creevey' })" >> index.js && \\${
|
23
|
+
npmRegistry
|
24
|
+
? `
|
25
|
+
echo "registry=${npmRegistry}" > .npmrc && \\`
|
26
|
+
: ''
|
27
|
+
}
|
15
28
|
npm i playwright-core${sv ? `@${sv.format()}` : ''}
|
16
29
|
|
17
30
|
EXPOSE 4444
|
@@ -1,19 +1,9 @@
|
|
1
|
-
import {
|
1
|
+
import { runImage } from '../docker';
|
2
2
|
import { emitWorkerMessage, subscribeOn } from '../messages';
|
3
3
|
import { isInsideDocker } from '../utils';
|
4
4
|
import { LOCALHOST_REGEXP } from '../webdriver';
|
5
|
-
import { playwrightDockerFile } from './docker-file';
|
6
|
-
|
7
|
-
export async function startPlaywrightContainer(browserName: string, debug: boolean): Promise<string> {
|
8
|
-
const {
|
9
|
-
default: { version },
|
10
|
-
} = await import('playwright-core/package.json', { with: { type: 'json' } });
|
11
|
-
|
12
|
-
const imageName = `creevey/${browserName}:v${version}`;
|
13
|
-
const dockerfile = playwrightDockerFile(browserName, version);
|
14
|
-
|
15
|
-
await buildImage(imageName, dockerfile);
|
16
5
|
|
6
|
+
export async function startPlaywrightContainer(imageName: string, debug: boolean): Promise<string> {
|
17
7
|
const port = await new Promise<number>((resolve) => {
|
18
8
|
subscribeOn('worker', (message) => {
|
19
9
|
if (message.type == 'port') {
|
@@ -1,5 +1,6 @@
|
|
1
|
+
/// <reference types="../../../types/playwright-context" />
|
1
2
|
import { Args } from '@storybook/csf';
|
2
|
-
import { Config, Options, StoriesRaw, StoryInput } from '../../types';
|
3
|
+
import { Config, Options, ServerTest, StoriesRaw, StoryInput } from '../../types';
|
3
4
|
import { logger } from '../logger';
|
4
5
|
import { subscribeOn } from '../messages';
|
5
6
|
import { CreeveyWebdriverBase } from '../webdriver';
|
@@ -85,6 +86,10 @@ export class PlaywrightWebdriver extends CreeveyWebdriverBase {
|
|
85
86
|
return this.#browser.loadStoriesFromBrowser();
|
86
87
|
}
|
87
88
|
|
89
|
+
afterTest(_test: ServerTest): Promise<void> {
|
90
|
+
return Promise.resolve(undefined);
|
91
|
+
}
|
92
|
+
|
88
93
|
protected async takeScreenshot(
|
89
94
|
captureElement: string | null,
|
90
95
|
ignoreElements?: string | string[] | null,
|
@@ -13,10 +13,19 @@ import { Builder, By, Capabilities, Origin, WebDriver, WebElement, logging } fro
|
|
13
13
|
// import { Options as SafariOptions } from 'selenium-webdriver/safari';
|
14
14
|
// import { Options as FirefoxOptions } from 'selenium-webdriver/firefox';
|
15
15
|
import { PageLoadStrategy } from 'selenium-webdriver/lib/capabilities.js';
|
16
|
-
import {
|
16
|
+
import {
|
17
|
+
BrowserConfigObject,
|
18
|
+
Config,
|
19
|
+
noop,
|
20
|
+
StorybookGlobals,
|
21
|
+
StoryInput,
|
22
|
+
StoriesRaw,
|
23
|
+
Options,
|
24
|
+
ServerTest,
|
25
|
+
} from '../../types.js';
|
17
26
|
import { colors, logger } from '../logger.js';
|
18
27
|
import { subscribeOn } from '../messages.js';
|
19
|
-
import { isShuttingDown, runSequence } from '../utils.js';
|
28
|
+
import { getTestPath, isShuttingDown, runSequence } from '../utils.js';
|
20
29
|
import {
|
21
30
|
appendIframePath,
|
22
31
|
getAddresses,
|
@@ -346,6 +355,24 @@ export class InternalBrowser {
|
|
346
355
|
return stories;
|
347
356
|
}
|
348
357
|
|
358
|
+
async afterTest(test: ServerTest): Promise<void> {
|
359
|
+
if (this.#logger.getLevel() === Logger.levels.TRACE) {
|
360
|
+
const output: string[] = [];
|
361
|
+
const types = await this.#browser.manage().logs().getAvailableLogTypes();
|
362
|
+
for (const type of types) {
|
363
|
+
const logs = await this.#browser.manage().logs().get(type);
|
364
|
+
output.push(logs.map((log) => JSON.stringify(log.toJSON(), null, 2)).join('\n'));
|
365
|
+
}
|
366
|
+
this.#logger.debug(
|
367
|
+
'----------',
|
368
|
+
getTestPath(test).join('/'),
|
369
|
+
'----------\n',
|
370
|
+
output.join('\n'),
|
371
|
+
'\n----------------------------------------------------------------------------------------------------',
|
372
|
+
);
|
373
|
+
}
|
374
|
+
}
|
375
|
+
|
349
376
|
static async getBrowser(
|
350
377
|
browserName: string,
|
351
378
|
gridUrl: string,
|
@@ -734,7 +761,7 @@ export class InternalBrowser {
|
|
734
761
|
compositeImage.data[i + 3] = image.data[j + 3];
|
735
762
|
}
|
736
763
|
}
|
737
|
-
return compositeImage
|
764
|
+
return PNG.sync.write(compositeImage);
|
738
765
|
}
|
739
766
|
|
740
767
|
private async removeIgnoreStyles(ignoreStyles: WebElement | null): Promise<void> {
|
@@ -1,5 +1,6 @@
|
|
1
|
+
/// <reference types="../../../types/selenium-context" />
|
1
2
|
import { Args } from '@storybook/csf';
|
2
|
-
import { Config, StorybookGlobals, StoryInput, StoriesRaw, Options } from '../../types.js';
|
3
|
+
import { Config, StorybookGlobals, StoryInput, StoriesRaw, Options, ServerTest } from '../../types.js';
|
3
4
|
import { subscribeOn } from '../messages.js';
|
4
5
|
import { CreeveyWebdriverBase } from '../webdriver.js';
|
5
6
|
import type { InternalBrowser } from './internal.js';
|
@@ -95,6 +96,15 @@ export class SeleniumWebdriver extends CreeveyWebdriverBase {
|
|
95
96
|
return this.#browser.loadStoriesFromBrowser();
|
96
97
|
}
|
97
98
|
|
99
|
+
afterTest(test: ServerTest): Promise<void> {
|
100
|
+
if (!this.#browser) {
|
101
|
+
// TODO Describe the error
|
102
|
+
throw new Error('Browser is not initialized');
|
103
|
+
}
|
104
|
+
|
105
|
+
return this.#browser.afterTest(test);
|
106
|
+
}
|
107
|
+
|
98
108
|
protected async takeScreenshot(
|
99
109
|
captureElement: string | null,
|
100
110
|
ignoreElements?: string | string[] | null,
|
package/src/server/webdriver.ts
CHANGED
@@ -11,6 +11,7 @@ import {
|
|
11
11
|
CreeveyStoryParams,
|
12
12
|
StoriesRaw,
|
13
13
|
CreeveyWebdriver,
|
14
|
+
ServerTest,
|
14
15
|
} from '../types.js';
|
15
16
|
import { emitStoriesMessage, subscribeOn } from './messages.js';
|
16
17
|
|
@@ -71,6 +72,8 @@ export abstract class CreeveyWebdriverBase implements CreeveyWebdriver {
|
|
71
72
|
|
72
73
|
abstract loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
73
74
|
|
75
|
+
abstract afterTest(test: ServerTest): Promise<void>;
|
76
|
+
|
74
77
|
async switchStory(
|
75
78
|
story: StoryInput,
|
76
79
|
context: BaseCreeveyTestContext,
|
@@ -2,7 +2,6 @@ import chai from 'chai';
|
|
2
2
|
import chalk from 'chalk';
|
3
3
|
import Logger from 'loglevel';
|
4
4
|
import EventEmitter from 'events';
|
5
|
-
import { Key, until, WebDriver } from 'selenium-webdriver';
|
6
5
|
import {
|
7
6
|
BaseCreeveyTestContext,
|
8
7
|
Config,
|
@@ -19,7 +18,6 @@ import {
|
|
19
18
|
} from '../../types.js';
|
20
19
|
import { subscribeOn, emitTestMessage, emitWorkerMessage } from '../messages.js';
|
21
20
|
import chaiImage from './chai-image.js';
|
22
|
-
import { SeleniumWebdriver } from '../selenium/webdriver.js';
|
23
21
|
import { getMatchers, getOdiffMatchers, ImageContext } from './match-image.js';
|
24
22
|
import { loadTestsFromStories } from '../stories.js';
|
25
23
|
import { logger } from '../logger.js';
|
@@ -49,22 +47,6 @@ async function getTestsFromStories(
|
|
49
47
|
return testsById;
|
50
48
|
}
|
51
49
|
|
52
|
-
async function outputTraceLogs(browser: WebDriver, test: ServerTest, logger: Logger.Logger): Promise<void> {
|
53
|
-
const output: string[] = [];
|
54
|
-
const types = await browser.manage().logs().getAvailableLogTypes();
|
55
|
-
for (const type of types) {
|
56
|
-
const logs = await browser.manage().logs().get(type);
|
57
|
-
output.push(logs.map((log) => JSON.stringify(log.toJSON(), null, 2)).join('\n'));
|
58
|
-
}
|
59
|
-
logger.debug(
|
60
|
-
'----------',
|
61
|
-
getTestPath(test).join('/'),
|
62
|
-
'----------\n',
|
63
|
-
output.join('\n'),
|
64
|
-
'\n----------------------------------------------------------------------------------------------------',
|
65
|
-
);
|
66
|
-
}
|
67
|
-
|
68
50
|
function runHandler(browserName: string, images: Partial<Record<string, Images>>, error?: unknown): void {
|
69
51
|
// TODO How handle browser corruption?
|
70
52
|
if (isImageError(error)) {
|
@@ -202,8 +184,9 @@ export async function start(browser: string, gridUrl: string, config: Config, op
|
|
202
184
|
|
203
185
|
const baseContext: BaseCreeveyTestContext = {
|
204
186
|
browserName: browser,
|
205
|
-
//
|
206
|
-
//
|
187
|
+
// @ts-expect-error We defined separate d.ts declarations for each webdriver
|
188
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
189
|
+
webdriver: webdriver.browser,
|
207
190
|
screenshots: [],
|
208
191
|
|
209
192
|
matchImage: matchImage,
|
@@ -211,9 +194,6 @@ export async function start(browser: string, gridUrl: string, config: Config, op
|
|
211
194
|
|
212
195
|
// NOTE: Deprecated
|
213
196
|
expect: chai.expect,
|
214
|
-
//TODO Move things below to the separate module
|
215
|
-
until: until,
|
216
|
-
keys: Key,
|
217
197
|
};
|
218
198
|
|
219
199
|
imagesContext.attachments = [];
|
@@ -277,15 +257,7 @@ export async function start(browser: string, gridUrl: string, config: Config, op
|
|
277
257
|
runner.emit(TEST_EVENTS.TEST_END, fakeTest);
|
278
258
|
runner.emit(TEST_EVENTS.RUN_END);
|
279
259
|
|
280
|
-
|
281
|
-
try {
|
282
|
-
if (webdriver instanceof SeleniumWebdriver && webdriver.browser) {
|
283
|
-
await outputTraceLogs(webdriver.browser, test, workerLogger);
|
284
|
-
}
|
285
|
-
} catch (_) {
|
286
|
-
/* noop */
|
287
|
-
}
|
288
|
-
}
|
260
|
+
await webdriver.afterTest(test);
|
289
261
|
|
290
262
|
runHandler(baseContext.browserName, imagesContext.images, error);
|
291
263
|
})().catch((error: unknown) => {
|
package/src/types.ts
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
import type { StoryContextForEnhancers, DecoratorFunction } from '@storybook/csf';
|
2
|
-
import type { IKey } from 'selenium-webdriver/lib/input.js';
|
3
2
|
import type { Worker as ClusterWorker } from 'cluster';
|
4
|
-
import type { /*Builder,*/ until } from 'selenium-webdriver';
|
5
3
|
import type Pixelmatch from 'pixelmatch';
|
6
4
|
import type { ODiffOptions } from 'odiff-bin';
|
7
5
|
import type { expect } from 'chai';
|
@@ -152,6 +150,7 @@ export interface CreeveyWebdriver {
|
|
152
150
|
closeBrowser(): Promise<void>;
|
153
151
|
loadStoriesFromBrowser(): Promise<StoriesRaw>;
|
154
152
|
switchStory(story: StoryInput, context: BaseCreeveyTestContext, logger: Logger.Logger): Promise<CreeveyTestContext>;
|
153
|
+
afterTest(test: ServerTest): Promise<void>;
|
155
154
|
}
|
156
155
|
|
157
156
|
export interface HookConfig {
|
@@ -413,14 +412,8 @@ export interface TestData extends TestMeta {
|
|
413
412
|
|
414
413
|
export interface BaseCreeveyTestContext {
|
415
414
|
browserName: string;
|
416
|
-
|
417
|
-
|
418
|
-
*/
|
419
|
-
until: typeof until;
|
420
|
-
/**
|
421
|
-
* @deprecated In near future Creevey will additionally support Playwright as a webdriver, so any Selenium specific things might not be available. Please import `keys` explicitly
|
422
|
-
*/
|
423
|
-
keys: IKey;
|
415
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
416
|
+
webdriver: any;
|
424
417
|
/**
|
425
418
|
* @deprecated Usually for screenshot testing you don't need other type of assertions except matching images, but if you really need it, please use external `expect` libs
|
426
419
|
*/
|