@dxos/test-utils 0.7.1 → 0.7.2-staging.6d26b2a
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/lib/browser/meta.json +1 -1
- package/dist/lib/browser/playwright.mjs +7 -2
- package/dist/lib/browser/playwright.mjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/playwright.cjs +9 -3
- package/dist/lib/node/playwright.cjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/playwright.mjs +7 -2
- package/dist/lib/node-esm/playwright.mjs.map +3 -3
- package/dist/types/src/playwright.d.ts +4 -2
- package/dist/types/src/playwright.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/playwright.ts +9 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/test-utils/src/resource.ts":{"bytes":1585,"imports":[{"path":"vitest","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/index.ts":{"bytes":498,"imports":[{"path":"packages/common/test-utils/src/resource.ts","kind":"import-statement","original":"./resource"}],"format":"esm"},"packages/common/test-utils/src/lock.ts":{"bytes":2083,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/playwright.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/common/test-utils/src/resource.ts":{"bytes":1585,"imports":[{"path":"vitest","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/index.ts":{"bytes":498,"imports":[{"path":"packages/common/test-utils/src/resource.ts","kind":"import-statement","original":"./resource"}],"format":"esm"},"packages/common/test-utils/src/lock.ts":{"bytes":2083,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/playwright.ts":{"bytes":8507,"imports":[{"path":"@nx/devkit","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"packages/common/test-utils/src/lock.ts","kind":"import-statement","original":"./lock"}],"format":"esm"}},"outputs":{"packages/common/test-utils/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":798},"packages/common/test-utils/dist/lib/browser/index.mjs":{"imports":[{"path":"vitest","kind":"import-statement","external":true}],"exports":["openAndClose"],"entryPoint":"packages/common/test-utils/src/index.ts","inputs":{"packages/common/test-utils/src/resource.ts":{"bytesInOutput":214},"packages/common/test-utils/src/index.ts":{"bytesInOutput":0}},"bytes":322},"packages/common/test-utils/dist/lib/browser/playwright.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5324},"packages/common/test-utils/dist/lib/browser/playwright.mjs":{"imports":[{"path":"@nx/devkit","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true}],"exports":["e2ePreset","setupPage","storybookUrl"],"entryPoint":"packages/common/test-utils/src/playwright.ts","inputs":{"packages/common/test-utils/src/playwright.ts":{"bytesInOutput":1838},"packages/common/test-utils/src/lock.ts":{"bytesInOutput":416}},"bytes":2487}}}
|
|
@@ -53,9 +53,12 @@ var e2ePreset = (cwd) => {
|
|
|
53
53
|
};
|
|
54
54
|
};
|
|
55
55
|
var setupPage = async (browser, options = {}) => {
|
|
56
|
-
const { url, bridgeLogs } = options;
|
|
56
|
+
const { url, bridgeLogs, viewportSize } = options;
|
|
57
57
|
const context = "newContext" in browser ? await browser.newContext() : browser;
|
|
58
58
|
const page = await context.newPage();
|
|
59
|
+
if (viewportSize) {
|
|
60
|
+
await page.setViewportSize(viewportSize);
|
|
61
|
+
}
|
|
59
62
|
if (bridgeLogs) {
|
|
60
63
|
const lock = new Lock();
|
|
61
64
|
page.on("pageerror", async (error) => {
|
|
@@ -87,8 +90,10 @@ var setupPage = async (browser, options = {}) => {
|
|
|
87
90
|
page
|
|
88
91
|
};
|
|
89
92
|
};
|
|
93
|
+
var storybookUrl = (storyId) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;
|
|
90
94
|
export {
|
|
91
95
|
e2ePreset,
|
|
92
|
-
setupPage
|
|
96
|
+
setupPage,
|
|
97
|
+
storybookUrl
|
|
93
98
|
};
|
|
94
99
|
//# sourceMappingURL=playwright.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/playwright.ts", "../../../src/lock.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { type Browser, type BrowserContext, type PlaywrightTestConfig } from '@playwright/test';\nimport { join, relative } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { Lock } from './lock';\n\nexport const e2ePreset = (cwd: string): PlaywrightTestConfig => {\n const packageJson = pkgUp.sync({ cwd });\n const packageDir = packageJson!.split('/').slice(0, -1).join('/');\n const packageDirRelative = relative(workspaceRoot, packageDir);\n const testResultsDir = join(workspaceRoot, 'test-results', packageDirRelative, 'results.xml');\n\n return {\n reporter: process.env.CI ? [['list'], ['junit', { outputFile: testResultsDir }]] : [['list']],\n use: {\n trace: 'retain-on-failure',\n },\n };\n};\n\nexport type SetupOptions = {\n url?: string;\n bridgeLogs?: boolean;\n};\n\nexport const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {\n const { url, bridgeLogs } = options;\n\n const context = 'newContext' in browser ? await browser.newContext() : browser;\n const page = await context.newPage();\n\n // TODO(wittjosiah): Remove?\n if (bridgeLogs) {\n const lock = new Lock();\n\n page.on('pageerror', async (error) => {\n await lock.executeSynchronized(async () => {\n // eslint-disable-next-line no-console\n console.log(error);\n });\n });\n\n page.on('console', async (msg) => {\n try {\n const argsPromise = Promise.all(msg.args().map((x) => x.jsonValue()));\n await lock.executeSynchronized(async () => {\n const args = await argsPromise;\n\n if (args.length > 0) {\n console.log(...args);\n } else {\n console.log(msg);\n }\n });\n } catch (err) {\n console.error('Failed to parse message', err);\n }\n });\n }\n\n if (url) {\n await page.goto(url);\n }\n\n return { context, page };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { trigger } from '@dxos/async';\n\n// Copied from @dxos/async.\nexport class Lock {\n private _lastPromise = Promise.resolve();\n\n async executeSynchronized<T>(fun: () => Promise<T>): Promise<T> {\n const prevPromise = this._lastPromise;\n const [getPromise, resolve] = trigger();\n this._lastPromise = getPromise();\n\n await prevPromise;\n try {\n const value = await fun();\n return value;\n } finally {\n resolve();\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";AAMA,SAASA,qBAAqB;AAE9B,SAASC,MAAMC,gBAAgB;AAC/B,OAAOC,WAAW;;;ACLlB,SAASC,eAAe;AAGjB,IAAMC,OAAN,MAAMA;EAAN;AACGC,wBAAeC,QAAQC,QAAO;;EAEtC,MAAMC,oBAAuBC,KAAmC;AAC9D,UAAMC,cAAc,KAAKL;AACzB,UAAM,CAACM,YAAYJ,OAAAA,IAAWK,QAAAA;AAC9B,SAAKP,eAAeM,WAAAA;AAEpB,UAAMD;AACN,QAAI;AACF,YAAMG,QAAQ,MAAMJ,IAAAA;AACpB,aAAOI;IACT,UAAA;AACEN,cAAAA;IACF;EACF;AACF;;;ADVO,IAAMO,YAAY,CAACC,QAAAA;AACxB,QAAMC,cAAcC,MAAMC,KAAK;IAAEH;EAAI,CAAA;AACrC,QAAMI,aAAaH,YAAaI,MAAM,GAAA,EAAKC,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA;AAC7D,QAAMC,qBAAqBC,SAASC,eAAeN,UAAAA;AACnD,QAAMO,iBAAiBJ,KAAKG,eAAe,gBAAgBF,oBAAoB,aAAA;AAE/E,SAAO;IACLI,UAAUC,QAAQC,IAAIC,KAAK;MAAC;QAAC;;MAAS;QAAC;QAAS;UAAEC,YAAYL;QAAe;;QAAM;MAAC;QAAC;;;IACrFM,KAAK;MACHC,OAAO;IACT;EACF;AACF;
|
|
6
|
-
"names": ["workspaceRoot", "join", "relative", "pkgUp", "trigger", "Lock", "_lastPromise", "Promise", "resolve", "executeSynchronized", "fun", "prevPromise", "getPromise", "trigger", "value", "e2ePreset", "cwd", "packageJson", "pkgUp", "sync", "packageDir", "split", "slice", "join", "packageDirRelative", "relative", "workspaceRoot", "testResultsDir", "reporter", "process", "env", "CI", "outputFile", "use", "trace", "setupPage", "browser", "options", "url", "bridgeLogs", "context", "newContext", "page", "newPage", "lock", "Lock", "on", "error", "executeSynchronized", "console", "log", "msg", "argsPromise", "Promise", "all", "args", "map", "x", "jsonValue", "length", "err", "goto"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { type Browser, type BrowserContext, type PlaywrightTestConfig, type Page } from '@playwright/test';\nimport { join, relative } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { Lock } from './lock';\n\nexport const e2ePreset = (cwd: string): PlaywrightTestConfig => {\n const packageJson = pkgUp.sync({ cwd });\n const packageDir = packageJson!.split('/').slice(0, -1).join('/');\n const packageDirRelative = relative(workspaceRoot, packageDir);\n const testResultsDir = join(workspaceRoot, 'test-results', packageDirRelative, 'results.xml');\n\n return {\n reporter: process.env.CI ? [['list'], ['junit', { outputFile: testResultsDir }]] : [['list']],\n use: {\n trace: 'retain-on-failure',\n },\n };\n};\n\nexport type SetupOptions = {\n url?: string;\n bridgeLogs?: boolean;\n viewportSize?: Parameters<Page['setViewportSize']>[0];\n};\n\nexport const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {\n const { url, bridgeLogs, viewportSize } = options;\n\n const context = 'newContext' in browser ? await browser.newContext() : browser;\n const page = await context.newPage();\n\n if (viewportSize) {\n await page.setViewportSize(viewportSize);\n }\n\n // TODO(wittjosiah): Remove?\n if (bridgeLogs) {\n const lock = new Lock();\n\n page.on('pageerror', async (error) => {\n await lock.executeSynchronized(async () => {\n // eslint-disable-next-line no-console\n console.log(error);\n });\n });\n\n page.on('console', async (msg) => {\n try {\n const argsPromise = Promise.all(msg.args().map((x) => x.jsonValue()));\n await lock.executeSynchronized(async () => {\n const args = await argsPromise;\n\n if (args.length > 0) {\n console.log(...args);\n } else {\n console.log(msg);\n }\n });\n } catch (err) {\n console.error('Failed to parse message', err);\n }\n });\n }\n\n if (url) {\n await page.goto(url);\n }\n\n return { context, page };\n};\n\nexport const storybookUrl = (storyId: string) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { trigger } from '@dxos/async';\n\n// Copied from @dxos/async.\nexport class Lock {\n private _lastPromise = Promise.resolve();\n\n async executeSynchronized<T>(fun: () => Promise<T>): Promise<T> {\n const prevPromise = this._lastPromise;\n const [getPromise, resolve] = trigger();\n this._lastPromise = getPromise();\n\n await prevPromise;\n try {\n const value = await fun();\n return value;\n } finally {\n resolve();\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAMA,SAASA,qBAAqB;AAE9B,SAASC,MAAMC,gBAAgB;AAC/B,OAAOC,WAAW;;;ACLlB,SAASC,eAAe;AAGjB,IAAMC,OAAN,MAAMA;EAAN;AACGC,wBAAeC,QAAQC,QAAO;;EAEtC,MAAMC,oBAAuBC,KAAmC;AAC9D,UAAMC,cAAc,KAAKL;AACzB,UAAM,CAACM,YAAYJ,OAAAA,IAAWK,QAAAA;AAC9B,SAAKP,eAAeM,WAAAA;AAEpB,UAAMD;AACN,QAAI;AACF,YAAMG,QAAQ,MAAMJ,IAAAA;AACpB,aAAOI;IACT,UAAA;AACEN,cAAAA;IACF;EACF;AACF;;;ADVO,IAAMO,YAAY,CAACC,QAAAA;AACxB,QAAMC,cAAcC,MAAMC,KAAK;IAAEH;EAAI,CAAA;AACrC,QAAMI,aAAaH,YAAaI,MAAM,GAAA,EAAKC,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA;AAC7D,QAAMC,qBAAqBC,SAASC,eAAeN,UAAAA;AACnD,QAAMO,iBAAiBJ,KAAKG,eAAe,gBAAgBF,oBAAoB,aAAA;AAE/E,SAAO;IACLI,UAAUC,QAAQC,IAAIC,KAAK;MAAC;QAAC;;MAAS;QAAC;QAAS;UAAEC,YAAYL;QAAe;;QAAM;MAAC;QAAC;;;IACrFM,KAAK;MACHC,OAAO;IACT;EACF;AACF;AAQO,IAAMC,YAAY,OAAOC,SAAmCC,UAAwB,CAAC,MAAC;AAC3F,QAAM,EAAEC,KAAKC,YAAYC,aAAY,IAAKH;AAE1C,QAAMI,UAAU,gBAAgBL,UAAU,MAAMA,QAAQM,WAAU,IAAKN;AACvE,QAAMO,OAAO,MAAMF,QAAQG,QAAO;AAElC,MAAIJ,cAAc;AAChB,UAAMG,KAAKE,gBAAgBL,YAAAA;EAC7B;AAGA,MAAID,YAAY;AACd,UAAMO,OAAO,IAAIC,KAAAA;AAEjBJ,SAAKK,GAAG,aAAa,OAAOC,UAAAA;AAC1B,YAAMH,KAAKI,oBAAoB,YAAA;AAE7BC,gBAAQC,IAAIH,KAAAA;MACd,CAAA;IACF,CAAA;AAEAN,SAAKK,GAAG,WAAW,OAAOK,QAAAA;AACxB,UAAI;AACF,cAAMC,cAAcC,QAAQC,IAAIH,IAAII,KAAI,EAAGC,IAAI,CAACC,MAAMA,EAAEC,UAAS,CAAA,CAAA;AACjE,cAAMd,KAAKI,oBAAoB,YAAA;AAC7B,gBAAMO,OAAO,MAAMH;AAEnB,cAAIG,KAAKI,SAAS,GAAG;AACnBV,oBAAQC,IAAG,GAAIK,IAAAA;UACjB,OAAO;AACLN,oBAAQC,IAAIC,GAAAA;UACd;QACF,CAAA;MACF,SAASS,KAAK;AACZX,gBAAQF,MAAM,2BAA2Ba,GAAAA;MAC3C;IACF,CAAA;EACF;AAEA,MAAIxB,KAAK;AACP,UAAMK,KAAKoB,KAAKzB,GAAAA;EAClB;AAEA,SAAO;IAAEG;IAASE;EAAK;AACzB;AAEO,IAAMqB,eAAe,CAACC,YAAoB,wCAAwCA,OAAAA;",
|
|
6
|
+
"names": ["workspaceRoot", "join", "relative", "pkgUp", "trigger", "Lock", "_lastPromise", "Promise", "resolve", "executeSynchronized", "fun", "prevPromise", "getPromise", "trigger", "value", "e2ePreset", "cwd", "packageJson", "pkgUp", "sync", "packageDir", "split", "slice", "join", "packageDirRelative", "relative", "workspaceRoot", "testResultsDir", "reporter", "process", "env", "CI", "outputFile", "use", "trace", "setupPage", "browser", "options", "url", "bridgeLogs", "viewportSize", "context", "newContext", "page", "newPage", "setViewportSize", "lock", "Lock", "on", "error", "executeSynchronized", "console", "log", "msg", "argsPromise", "Promise", "all", "args", "map", "x", "jsonValue", "length", "err", "goto", "storybookUrl", "storyId"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/test-utils/src/resource.ts":{"bytes":1585,"imports":[{"path":"vitest","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/index.ts":{"bytes":498,"imports":[{"path":"packages/common/test-utils/src/resource.ts","kind":"import-statement","original":"./resource"}],"format":"esm"},"packages/common/test-utils/src/lock.ts":{"bytes":2083,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/playwright.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/common/test-utils/src/resource.ts":{"bytes":1585,"imports":[{"path":"vitest","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/index.ts":{"bytes":498,"imports":[{"path":"packages/common/test-utils/src/resource.ts","kind":"import-statement","original":"./resource"}],"format":"esm"},"packages/common/test-utils/src/lock.ts":{"bytes":2083,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/playwright.ts":{"bytes":8507,"imports":[{"path":"@nx/devkit","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"packages/common/test-utils/src/lock.ts","kind":"import-statement","original":"./lock"}],"format":"esm"}},"outputs":{"packages/common/test-utils/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":798},"packages/common/test-utils/dist/lib/node/index.cjs":{"imports":[{"path":"vitest","kind":"import-statement","external":true}],"exports":["openAndClose"],"entryPoint":"packages/common/test-utils/src/index.ts","inputs":{"packages/common/test-utils/src/resource.ts":{"bytesInOutput":214},"packages/common/test-utils/src/index.ts":{"bytesInOutput":0}},"bytes":322},"packages/common/test-utils/dist/lib/node/playwright.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5324},"packages/common/test-utils/dist/lib/node/playwright.cjs":{"imports":[{"path":"@nx/devkit","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true}],"exports":["e2ePreset","setupPage","storybookUrl"],"entryPoint":"packages/common/test-utils/src/playwright.ts","inputs":{"packages/common/test-utils/src/playwright.ts":{"bytesInOutput":1828},"packages/common/test-utils/src/lock.ts":{"bytesInOutput":416}},"bytes":2477}}}
|
|
@@ -29,7 +29,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var playwright_exports = {};
|
|
30
30
|
__export(playwright_exports, {
|
|
31
31
|
e2ePreset: () => e2ePreset,
|
|
32
|
-
setupPage: () => setupPage
|
|
32
|
+
setupPage: () => setupPage,
|
|
33
|
+
storybookUrl: () => storybookUrl
|
|
33
34
|
});
|
|
34
35
|
module.exports = __toCommonJS(playwright_exports);
|
|
35
36
|
var import_devkit = require("@nx/devkit");
|
|
@@ -82,9 +83,12 @@ var e2ePreset = (cwd) => {
|
|
|
82
83
|
};
|
|
83
84
|
};
|
|
84
85
|
var setupPage = async (browser, options = {}) => {
|
|
85
|
-
const { url, bridgeLogs } = options;
|
|
86
|
+
const { url, bridgeLogs, viewportSize } = options;
|
|
86
87
|
const context = "newContext" in browser ? await browser.newContext() : browser;
|
|
87
88
|
const page = await context.newPage();
|
|
89
|
+
if (viewportSize) {
|
|
90
|
+
await page.setViewportSize(viewportSize);
|
|
91
|
+
}
|
|
88
92
|
if (bridgeLogs) {
|
|
89
93
|
const lock = new Lock();
|
|
90
94
|
page.on("pageerror", async (error) => {
|
|
@@ -116,9 +120,11 @@ var setupPage = async (browser, options = {}) => {
|
|
|
116
120
|
page
|
|
117
121
|
};
|
|
118
122
|
};
|
|
123
|
+
var storybookUrl = (storyId) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;
|
|
119
124
|
// Annotate the CommonJS export names for ESM import in node:
|
|
120
125
|
0 && (module.exports = {
|
|
121
126
|
e2ePreset,
|
|
122
|
-
setupPage
|
|
127
|
+
setupPage,
|
|
128
|
+
storybookUrl
|
|
123
129
|
});
|
|
124
130
|
//# sourceMappingURL=playwright.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/playwright.ts", "../../../src/lock.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { type Browser, type BrowserContext, type PlaywrightTestConfig } from '@playwright/test';\nimport { join, relative } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { Lock } from './lock';\n\nexport const e2ePreset = (cwd: string): PlaywrightTestConfig => {\n const packageJson = pkgUp.sync({ cwd });\n const packageDir = packageJson!.split('/').slice(0, -1).join('/');\n const packageDirRelative = relative(workspaceRoot, packageDir);\n const testResultsDir = join(workspaceRoot, 'test-results', packageDirRelative, 'results.xml');\n\n return {\n reporter: process.env.CI ? [['list'], ['junit', { outputFile: testResultsDir }]] : [['list']],\n use: {\n trace: 'retain-on-failure',\n },\n };\n};\n\nexport type SetupOptions = {\n url?: string;\n bridgeLogs?: boolean;\n};\n\nexport const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {\n const { url, bridgeLogs } = options;\n\n const context = 'newContext' in browser ? await browser.newContext() : browser;\n const page = await context.newPage();\n\n // TODO(wittjosiah): Remove?\n if (bridgeLogs) {\n const lock = new Lock();\n\n page.on('pageerror', async (error) => {\n await lock.executeSynchronized(async () => {\n // eslint-disable-next-line no-console\n console.log(error);\n });\n });\n\n page.on('console', async (msg) => {\n try {\n const argsPromise = Promise.all(msg.args().map((x) => x.jsonValue()));\n await lock.executeSynchronized(async () => {\n const args = await argsPromise;\n\n if (args.length > 0) {\n console.log(...args);\n } else {\n console.log(msg);\n }\n });\n } catch (err) {\n console.error('Failed to parse message', err);\n }\n });\n }\n\n if (url) {\n await page.goto(url);\n }\n\n return { context, page };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { trigger } from '@dxos/async';\n\n// Copied from @dxos/async.\nexport class Lock {\n private _lastPromise = Promise.resolve();\n\n async executeSynchronized<T>(fun: () => Promise<T>): Promise<T> {\n const prevPromise = this._lastPromise;\n const [getPromise, resolve] = trigger();\n this._lastPromise = getPromise();\n\n await prevPromise;\n try {\n const value = await fun();\n return value;\n } finally {\n resolve();\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["Lock", "_lastPromise", "Promise", "resolve", "executeSynchronized", "fun", "prevPromise", "getPromise", "trigger", "value", "e2ePreset", "cwd", "packageJson", "pkgUp", "sync", "packageDir", "split", "slice", "join", "packageDirRelative", "relative", "workspaceRoot", "testResultsDir", "reporter", "process", "env", "CI", "outputFile", "use", "trace", "setupPage", "browser", "options", "url", "bridgeLogs", "context", "newContext", "page", "newPage", "lock", "on", "error", "console", "log", "msg", "argsPromise", "all", "args", "map", "x", "jsonValue", "length", "err", "goto"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { type Browser, type BrowserContext, type PlaywrightTestConfig, type Page } from '@playwright/test';\nimport { join, relative } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { Lock } from './lock';\n\nexport const e2ePreset = (cwd: string): PlaywrightTestConfig => {\n const packageJson = pkgUp.sync({ cwd });\n const packageDir = packageJson!.split('/').slice(0, -1).join('/');\n const packageDirRelative = relative(workspaceRoot, packageDir);\n const testResultsDir = join(workspaceRoot, 'test-results', packageDirRelative, 'results.xml');\n\n return {\n reporter: process.env.CI ? [['list'], ['junit', { outputFile: testResultsDir }]] : [['list']],\n use: {\n trace: 'retain-on-failure',\n },\n };\n};\n\nexport type SetupOptions = {\n url?: string;\n bridgeLogs?: boolean;\n viewportSize?: Parameters<Page['setViewportSize']>[0];\n};\n\nexport const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {\n const { url, bridgeLogs, viewportSize } = options;\n\n const context = 'newContext' in browser ? await browser.newContext() : browser;\n const page = await context.newPage();\n\n if (viewportSize) {\n await page.setViewportSize(viewportSize);\n }\n\n // TODO(wittjosiah): Remove?\n if (bridgeLogs) {\n const lock = new Lock();\n\n page.on('pageerror', async (error) => {\n await lock.executeSynchronized(async () => {\n // eslint-disable-next-line no-console\n console.log(error);\n });\n });\n\n page.on('console', async (msg) => {\n try {\n const argsPromise = Promise.all(msg.args().map((x) => x.jsonValue()));\n await lock.executeSynchronized(async () => {\n const args = await argsPromise;\n\n if (args.length > 0) {\n console.log(...args);\n } else {\n console.log(msg);\n }\n });\n } catch (err) {\n console.error('Failed to parse message', err);\n }\n });\n }\n\n if (url) {\n await page.goto(url);\n }\n\n return { context, page };\n};\n\nexport const storybookUrl = (storyId: string) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { trigger } from '@dxos/async';\n\n// Copied from @dxos/async.\nexport class Lock {\n private _lastPromise = Promise.resolve();\n\n async executeSynchronized<T>(fun: () => Promise<T>): Promise<T> {\n const prevPromise = this._lastPromise;\n const [getPromise, resolve] = trigger();\n this._lastPromise = getPromise();\n\n await prevPromise;\n try {\n const value = await fun();\n return value;\n } finally {\n resolve();\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oBAA8B;AAE9B,uBAA+B;AAC/B,oBAAkB;ACLlB,mBAAwB;AAGjB,IAAMA,OAAN,MAAMA;EAAN,cAAA;AACGC,SAAAA,eAAeC,QAAQC,QAAO;;EAEtC,MAAMC,oBAAuBC,KAAmC;AAC9D,UAAMC,cAAc,KAAKL;AACzB,UAAM,CAACM,YAAYJ,OAAAA,QAAWK,sBAAAA;AAC9B,SAAKP,eAAeM,WAAAA;AAEpB,UAAMD;AACN,QAAI;AACF,YAAMG,QAAQ,MAAMJ,IAAAA;AACpB,aAAOI;IACT,UAAA;AACEN,cAAAA;IACF;EACF;AACF;ADVO,IAAMO,YAAY,CAACC,QAAAA;AACxB,QAAMC,cAAcC,cAAAA,QAAMC,KAAK;IAAEH;EAAI,CAAA;AACrC,QAAMI,aAAaH,YAAaI,MAAM,GAAA,EAAKC,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA;AAC7D,QAAMC,yBAAqBC,2BAASC,6BAAeN,UAAAA;AACnD,QAAMO,qBAAiBJ,uBAAKG,6BAAe,gBAAgBF,oBAAoB,aAAA;AAE/E,SAAO;IACLI,UAAUC,QAAQC,IAAIC,KAAK;MAAC;QAAC;;MAAS;QAAC;QAAS;UAAEC,YAAYL;QAAe;;QAAM;MAAC;QAAC;;;IACrFM,KAAK;MACHC,OAAO;IACT;EACF;AACF;AAQO,IAAMC,YAAY,OAAOC,SAAmCC,UAAwB,CAAC,MAAC;AAC3F,QAAM,EAAEC,KAAKC,YAAYC,aAAY,IAAKH;AAE1C,QAAMI,UAAU,gBAAgBL,UAAU,MAAMA,QAAQM,WAAU,IAAKN;AACvE,QAAMO,OAAO,MAAMF,QAAQG,QAAO;AAElC,MAAIJ,cAAc;AAChB,UAAMG,KAAKE,gBAAgBL,YAAAA;EAC7B;AAGA,MAAID,YAAY;AACd,UAAMO,OAAO,IAAIzC,KAAAA;AAEjBsC,SAAKI,GAAG,aAAa,OAAOC,UAAAA;AAC1B,YAAMF,KAAKrC,oBAAoB,YAAA;AAE7BwC,gBAAQC,IAAIF,KAAAA;MACd,CAAA;IACF,CAAA;AAEAL,SAAKI,GAAG,WAAW,OAAOI,QAAAA;AACxB,UAAI;AACF,cAAMC,cAAc7C,QAAQ8C,IAAIF,IAAIG,KAAI,EAAGC,IAAI,CAACC,MAAMA,EAAEC,UAAS,CAAA,CAAA;AACjE,cAAMX,KAAKrC,oBAAoB,YAAA;AAC7B,gBAAM6C,OAAO,MAAMF;AAEnB,cAAIE,KAAKI,SAAS,GAAG;AACnBT,oBAAQC,IAAG,GAAII,IAAAA;UACjB,OAAO;AACLL,oBAAQC,IAAIC,GAAAA;UACd;QACF,CAAA;MACF,SAASQ,KAAK;AACZV,gBAAQD,MAAM,2BAA2BW,GAAAA;MAC3C;IACF,CAAA;EACF;AAEA,MAAIrB,KAAK;AACP,UAAMK,KAAKiB,KAAKtB,GAAAA;EAClB;AAEA,SAAO;IAAEG;IAASE;EAAK;AACzB;AAEO,IAAMkB,eAAe,CAACC,YAAoB,wCAAwCA,OAAAA;",
|
|
6
|
+
"names": ["Lock", "_lastPromise", "Promise", "resolve", "executeSynchronized", "fun", "prevPromise", "getPromise", "trigger", "value", "e2ePreset", "cwd", "packageJson", "pkgUp", "sync", "packageDir", "split", "slice", "join", "packageDirRelative", "relative", "workspaceRoot", "testResultsDir", "reporter", "process", "env", "CI", "outputFile", "use", "trace", "setupPage", "browser", "options", "url", "bridgeLogs", "viewportSize", "context", "newContext", "page", "newPage", "setViewportSize", "lock", "on", "error", "console", "log", "msg", "argsPromise", "all", "args", "map", "x", "jsonValue", "length", "err", "goto", "storybookUrl", "storyId"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/test-utils/src/resource.ts":{"bytes":1585,"imports":[{"path":"vitest","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/index.ts":{"bytes":498,"imports":[{"path":"packages/common/test-utils/src/resource.ts","kind":"import-statement","original":"./resource"}],"format":"esm"},"packages/common/test-utils/src/lock.ts":{"bytes":2083,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/playwright.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/common/test-utils/src/resource.ts":{"bytes":1585,"imports":[{"path":"vitest","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/index.ts":{"bytes":498,"imports":[{"path":"packages/common/test-utils/src/resource.ts","kind":"import-statement","original":"./resource"}],"format":"esm"},"packages/common/test-utils/src/lock.ts":{"bytes":2083,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true}],"format":"esm"},"packages/common/test-utils/src/playwright.ts":{"bytes":8507,"imports":[{"path":"@nx/devkit","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"packages/common/test-utils/src/lock.ts","kind":"import-statement","original":"./lock"}],"format":"esm"}},"outputs":{"packages/common/test-utils/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":800},"packages/common/test-utils/dist/lib/node-esm/index.mjs":{"imports":[{"path":"vitest","kind":"import-statement","external":true}],"exports":["openAndClose"],"entryPoint":"packages/common/test-utils/src/index.ts","inputs":{"packages/common/test-utils/src/resource.ts":{"bytesInOutput":214},"packages/common/test-utils/src/index.ts":{"bytesInOutput":0}},"bytes":415},"packages/common/test-utils/dist/lib/node-esm/playwright.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5326},"packages/common/test-utils/dist/lib/node-esm/playwright.mjs":{"imports":[{"path":"@nx/devkit","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true}],"exports":["e2ePreset","setupPage","storybookUrl"],"entryPoint":"packages/common/test-utils/src/playwright.ts","inputs":{"packages/common/test-utils/src/playwright.ts":{"bytesInOutput":1828},"packages/common/test-utils/src/lock.ts":{"bytesInOutput":416}},"bytes":2570}}}
|
|
@@ -55,9 +55,12 @@ var e2ePreset = (cwd) => {
|
|
|
55
55
|
};
|
|
56
56
|
};
|
|
57
57
|
var setupPage = async (browser, options = {}) => {
|
|
58
|
-
const { url, bridgeLogs } = options;
|
|
58
|
+
const { url, bridgeLogs, viewportSize } = options;
|
|
59
59
|
const context = "newContext" in browser ? await browser.newContext() : browser;
|
|
60
60
|
const page = await context.newPage();
|
|
61
|
+
if (viewportSize) {
|
|
62
|
+
await page.setViewportSize(viewportSize);
|
|
63
|
+
}
|
|
61
64
|
if (bridgeLogs) {
|
|
62
65
|
const lock = new Lock();
|
|
63
66
|
page.on("pageerror", async (error) => {
|
|
@@ -89,8 +92,10 @@ var setupPage = async (browser, options = {}) => {
|
|
|
89
92
|
page
|
|
90
93
|
};
|
|
91
94
|
};
|
|
95
|
+
var storybookUrl = (storyId) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;
|
|
92
96
|
export {
|
|
93
97
|
e2ePreset,
|
|
94
|
-
setupPage
|
|
98
|
+
setupPage,
|
|
99
|
+
storybookUrl
|
|
95
100
|
};
|
|
96
101
|
//# sourceMappingURL=playwright.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/playwright.ts", "../../../src/lock.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { type Browser, type BrowserContext, type PlaywrightTestConfig } from '@playwright/test';\nimport { join, relative } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { Lock } from './lock';\n\nexport const e2ePreset = (cwd: string): PlaywrightTestConfig => {\n const packageJson = pkgUp.sync({ cwd });\n const packageDir = packageJson!.split('/').slice(0, -1).join('/');\n const packageDirRelative = relative(workspaceRoot, packageDir);\n const testResultsDir = join(workspaceRoot, 'test-results', packageDirRelative, 'results.xml');\n\n return {\n reporter: process.env.CI ? [['list'], ['junit', { outputFile: testResultsDir }]] : [['list']],\n use: {\n trace: 'retain-on-failure',\n },\n };\n};\n\nexport type SetupOptions = {\n url?: string;\n bridgeLogs?: boolean;\n};\n\nexport const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {\n const { url, bridgeLogs } = options;\n\n const context = 'newContext' in browser ? await browser.newContext() : browser;\n const page = await context.newPage();\n\n // TODO(wittjosiah): Remove?\n if (bridgeLogs) {\n const lock = new Lock();\n\n page.on('pageerror', async (error) => {\n await lock.executeSynchronized(async () => {\n // eslint-disable-next-line no-console\n console.log(error);\n });\n });\n\n page.on('console', async (msg) => {\n try {\n const argsPromise = Promise.all(msg.args().map((x) => x.jsonValue()));\n await lock.executeSynchronized(async () => {\n const args = await argsPromise;\n\n if (args.length > 0) {\n console.log(...args);\n } else {\n console.log(msg);\n }\n });\n } catch (err) {\n console.error('Failed to parse message', err);\n }\n });\n }\n\n if (url) {\n await page.goto(url);\n }\n\n return { context, page };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { trigger } from '@dxos/async';\n\n// Copied from @dxos/async.\nexport class Lock {\n private _lastPromise = Promise.resolve();\n\n async executeSynchronized<T>(fun: () => Promise<T>): Promise<T> {\n const prevPromise = this._lastPromise;\n const [getPromise, resolve] = trigger();\n this._lastPromise = getPromise();\n\n await prevPromise;\n try {\n const value = await fun();\n return value;\n } finally {\n resolve();\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;AAMA,SAASA,qBAAqB;AAE9B,SAASC,MAAMC,gBAAgB;AAC/B,OAAOC,WAAW;;;ACLlB,SAASC,eAAe;AAGjB,IAAMC,OAAN,MAAMA;EAAN;AACGC,wBAAeC,QAAQC,QAAO;;EAEtC,MAAMC,oBAAuBC,KAAmC;AAC9D,UAAMC,cAAc,KAAKL;AACzB,UAAM,CAACM,YAAYJ,OAAAA,IAAWK,QAAAA;AAC9B,SAAKP,eAAeM,WAAAA;AAEpB,UAAMD;AACN,QAAI;AACF,YAAMG,QAAQ,MAAMJ,IAAAA;AACpB,aAAOI;IACT,UAAA;AACEN,cAAAA;IACF;EACF;AACF;;;ADVO,IAAMO,YAAY,CAACC,QAAAA;AACxB,QAAMC,cAAcC,MAAMC,KAAK;IAAEH;EAAI,CAAA;AACrC,QAAMI,aAAaH,YAAaI,MAAM,GAAA,EAAKC,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA;AAC7D,QAAMC,qBAAqBC,SAASC,eAAeN,UAAAA;AACnD,QAAMO,iBAAiBJ,KAAKG,eAAe,gBAAgBF,oBAAoB,aAAA;AAE/E,SAAO;IACLI,UAAUC,QAAQC,IAAIC,KAAK;MAAC;QAAC;;MAAS;QAAC;QAAS;UAAEC,YAAYL;QAAe;;QAAM;MAAC;QAAC;;;IACrFM,KAAK;MACHC,OAAO;IACT;EACF;AACF;
|
|
6
|
-
"names": ["workspaceRoot", "join", "relative", "pkgUp", "trigger", "Lock", "_lastPromise", "Promise", "resolve", "executeSynchronized", "fun", "prevPromise", "getPromise", "trigger", "value", "e2ePreset", "cwd", "packageJson", "pkgUp", "sync", "packageDir", "split", "slice", "join", "packageDirRelative", "relative", "workspaceRoot", "testResultsDir", "reporter", "process", "env", "CI", "outputFile", "use", "trace", "setupPage", "browser", "options", "url", "bridgeLogs", "context", "newContext", "page", "newPage", "lock", "Lock", "on", "error", "executeSynchronized", "console", "log", "msg", "argsPromise", "Promise", "all", "args", "map", "x", "jsonValue", "length", "err", "goto"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { type Browser, type BrowserContext, type PlaywrightTestConfig, type Page } from '@playwright/test';\nimport { join, relative } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { Lock } from './lock';\n\nexport const e2ePreset = (cwd: string): PlaywrightTestConfig => {\n const packageJson = pkgUp.sync({ cwd });\n const packageDir = packageJson!.split('/').slice(0, -1).join('/');\n const packageDirRelative = relative(workspaceRoot, packageDir);\n const testResultsDir = join(workspaceRoot, 'test-results', packageDirRelative, 'results.xml');\n\n return {\n reporter: process.env.CI ? [['list'], ['junit', { outputFile: testResultsDir }]] : [['list']],\n use: {\n trace: 'retain-on-failure',\n },\n };\n};\n\nexport type SetupOptions = {\n url?: string;\n bridgeLogs?: boolean;\n viewportSize?: Parameters<Page['setViewportSize']>[0];\n};\n\nexport const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {\n const { url, bridgeLogs, viewportSize } = options;\n\n const context = 'newContext' in browser ? await browser.newContext() : browser;\n const page = await context.newPage();\n\n if (viewportSize) {\n await page.setViewportSize(viewportSize);\n }\n\n // TODO(wittjosiah): Remove?\n if (bridgeLogs) {\n const lock = new Lock();\n\n page.on('pageerror', async (error) => {\n await lock.executeSynchronized(async () => {\n // eslint-disable-next-line no-console\n console.log(error);\n });\n });\n\n page.on('console', async (msg) => {\n try {\n const argsPromise = Promise.all(msg.args().map((x) => x.jsonValue()));\n await lock.executeSynchronized(async () => {\n const args = await argsPromise;\n\n if (args.length > 0) {\n console.log(...args);\n } else {\n console.log(msg);\n }\n });\n } catch (err) {\n console.error('Failed to parse message', err);\n }\n });\n }\n\n if (url) {\n await page.goto(url);\n }\n\n return { context, page };\n};\n\nexport const storybookUrl = (storyId: string) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { trigger } from '@dxos/async';\n\n// Copied from @dxos/async.\nexport class Lock {\n private _lastPromise = Promise.resolve();\n\n async executeSynchronized<T>(fun: () => Promise<T>): Promise<T> {\n const prevPromise = this._lastPromise;\n const [getPromise, resolve] = trigger();\n this._lastPromise = getPromise();\n\n await prevPromise;\n try {\n const value = await fun();\n return value;\n } finally {\n resolve();\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;AAMA,SAASA,qBAAqB;AAE9B,SAASC,MAAMC,gBAAgB;AAC/B,OAAOC,WAAW;;;ACLlB,SAASC,eAAe;AAGjB,IAAMC,OAAN,MAAMA;EAAN;AACGC,wBAAeC,QAAQC,QAAO;;EAEtC,MAAMC,oBAAuBC,KAAmC;AAC9D,UAAMC,cAAc,KAAKL;AACzB,UAAM,CAACM,YAAYJ,OAAAA,IAAWK,QAAAA;AAC9B,SAAKP,eAAeM,WAAAA;AAEpB,UAAMD;AACN,QAAI;AACF,YAAMG,QAAQ,MAAMJ,IAAAA;AACpB,aAAOI;IACT,UAAA;AACEN,cAAAA;IACF;EACF;AACF;;;ADVO,IAAMO,YAAY,CAACC,QAAAA;AACxB,QAAMC,cAAcC,MAAMC,KAAK;IAAEH;EAAI,CAAA;AACrC,QAAMI,aAAaH,YAAaI,MAAM,GAAA,EAAKC,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA;AAC7D,QAAMC,qBAAqBC,SAASC,eAAeN,UAAAA;AACnD,QAAMO,iBAAiBJ,KAAKG,eAAe,gBAAgBF,oBAAoB,aAAA;AAE/E,SAAO;IACLI,UAAUC,QAAQC,IAAIC,KAAK;MAAC;QAAC;;MAAS;QAAC;QAAS;UAAEC,YAAYL;QAAe;;QAAM;MAAC;QAAC;;;IACrFM,KAAK;MACHC,OAAO;IACT;EACF;AACF;AAQO,IAAMC,YAAY,OAAOC,SAAmCC,UAAwB,CAAC,MAAC;AAC3F,QAAM,EAAEC,KAAKC,YAAYC,aAAY,IAAKH;AAE1C,QAAMI,UAAU,gBAAgBL,UAAU,MAAMA,QAAQM,WAAU,IAAKN;AACvE,QAAMO,OAAO,MAAMF,QAAQG,QAAO;AAElC,MAAIJ,cAAc;AAChB,UAAMG,KAAKE,gBAAgBL,YAAAA;EAC7B;AAGA,MAAID,YAAY;AACd,UAAMO,OAAO,IAAIC,KAAAA;AAEjBJ,SAAKK,GAAG,aAAa,OAAOC,UAAAA;AAC1B,YAAMH,KAAKI,oBAAoB,YAAA;AAE7BC,gBAAQC,IAAIH,KAAAA;MACd,CAAA;IACF,CAAA;AAEAN,SAAKK,GAAG,WAAW,OAAOK,QAAAA;AACxB,UAAI;AACF,cAAMC,cAAcC,QAAQC,IAAIH,IAAII,KAAI,EAAGC,IAAI,CAACC,MAAMA,EAAEC,UAAS,CAAA,CAAA;AACjE,cAAMd,KAAKI,oBAAoB,YAAA;AAC7B,gBAAMO,OAAO,MAAMH;AAEnB,cAAIG,KAAKI,SAAS,GAAG;AACnBV,oBAAQC,IAAG,GAAIK,IAAAA;UACjB,OAAO;AACLN,oBAAQC,IAAIC,GAAAA;UACd;QACF,CAAA;MACF,SAASS,KAAK;AACZX,gBAAQF,MAAM,2BAA2Ba,GAAAA;MAC3C;IACF,CAAA;EACF;AAEA,MAAIxB,KAAK;AACP,UAAMK,KAAKoB,KAAKzB,GAAAA;EAClB;AAEA,SAAO;IAAEG;IAASE;EAAK;AACzB;AAEO,IAAMqB,eAAe,CAACC,YAAoB,wCAAwCA,OAAAA;",
|
|
6
|
+
"names": ["workspaceRoot", "join", "relative", "pkgUp", "trigger", "Lock", "_lastPromise", "Promise", "resolve", "executeSynchronized", "fun", "prevPromise", "getPromise", "trigger", "value", "e2ePreset", "cwd", "packageJson", "pkgUp", "sync", "packageDir", "split", "slice", "join", "packageDirRelative", "relative", "workspaceRoot", "testResultsDir", "reporter", "process", "env", "CI", "outputFile", "use", "trace", "setupPage", "browser", "options", "url", "bridgeLogs", "viewportSize", "context", "newContext", "page", "newPage", "setViewportSize", "lock", "Lock", "on", "error", "executeSynchronized", "console", "log", "msg", "argsPromise", "Promise", "all", "args", "map", "x", "jsonValue", "length", "err", "goto", "storybookUrl", "storyId"]
|
|
7
7
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { type Browser, type BrowserContext, type PlaywrightTestConfig } from '@playwright/test';
|
|
1
|
+
import { type Browser, type BrowserContext, type PlaywrightTestConfig, type Page } from '@playwright/test';
|
|
2
2
|
export declare const e2ePreset: (cwd: string) => PlaywrightTestConfig;
|
|
3
3
|
export type SetupOptions = {
|
|
4
4
|
url?: string;
|
|
5
5
|
bridgeLogs?: boolean;
|
|
6
|
+
viewportSize?: Parameters<Page['setViewportSize']>[0];
|
|
6
7
|
};
|
|
7
8
|
export declare const setupPage: (browser: Browser | BrowserContext, options?: SetupOptions) => Promise<{
|
|
8
9
|
context: BrowserContext;
|
|
9
|
-
page:
|
|
10
|
+
page: Page;
|
|
10
11
|
}>;
|
|
12
|
+
export declare const storybookUrl: (storyId: string) => string;
|
|
11
13
|
//# sourceMappingURL=playwright.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/playwright.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/playwright.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAM3G,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,oBAYvC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,SAAS,YAAmB,OAAO,GAAG,cAAc,YAAW,YAAY;;;EA4CvF,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,MAAM,WAAqE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/test-utils",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2-staging.6d26b2a",
|
|
4
4
|
"description": "Test utilities",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"@playwright/test": "^1.46.0",
|
|
42
42
|
"pkg-up": "^3.1.0",
|
|
43
43
|
"vitest": "^2.1.3",
|
|
44
|
-
"@dxos/async": "0.7.
|
|
45
|
-
"@dxos/node-std": "0.7.
|
|
44
|
+
"@dxos/async": "0.7.2-staging.6d26b2a",
|
|
45
|
+
"@dxos/node-std": "0.7.2-staging.6d26b2a"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
package/src/playwright.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/* eslint-disable no-console */
|
|
6
6
|
|
|
7
7
|
import { workspaceRoot } from '@nx/devkit';
|
|
8
|
-
import { type Browser, type BrowserContext, type PlaywrightTestConfig } from '@playwright/test';
|
|
8
|
+
import { type Browser, type BrowserContext, type PlaywrightTestConfig, type Page } from '@playwright/test';
|
|
9
9
|
import { join, relative } from 'node:path';
|
|
10
10
|
import pkgUp from 'pkg-up';
|
|
11
11
|
|
|
@@ -28,14 +28,19 @@ export const e2ePreset = (cwd: string): PlaywrightTestConfig => {
|
|
|
28
28
|
export type SetupOptions = {
|
|
29
29
|
url?: string;
|
|
30
30
|
bridgeLogs?: boolean;
|
|
31
|
+
viewportSize?: Parameters<Page['setViewportSize']>[0];
|
|
31
32
|
};
|
|
32
33
|
|
|
33
34
|
export const setupPage = async (browser: Browser | BrowserContext, options: SetupOptions = {}) => {
|
|
34
|
-
const { url, bridgeLogs } = options;
|
|
35
|
+
const { url, bridgeLogs, viewportSize } = options;
|
|
35
36
|
|
|
36
37
|
const context = 'newContext' in browser ? await browser.newContext() : browser;
|
|
37
38
|
const page = await context.newPage();
|
|
38
39
|
|
|
40
|
+
if (viewportSize) {
|
|
41
|
+
await page.setViewportSize(viewportSize);
|
|
42
|
+
}
|
|
43
|
+
|
|
39
44
|
// TODO(wittjosiah): Remove?
|
|
40
45
|
if (bridgeLogs) {
|
|
41
46
|
const lock = new Lock();
|
|
@@ -71,3 +76,5 @@ export const setupPage = async (browser: Browser | BrowserContext, options: Setu
|
|
|
71
76
|
|
|
72
77
|
return { context, page };
|
|
73
78
|
};
|
|
79
|
+
|
|
80
|
+
export const storybookUrl = (storyId: string) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;
|