@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.
@@ -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":7676,"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":4881},"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"],"entryPoint":"packages/common/test-utils/src/playwright.ts","inputs":{"packages/common/test-utils/src/playwright.ts":{"bytesInOutput":1654},"packages/common/test-utils/src/lock.ts":{"bytesInOutput":416}},"bytes":2287}}}
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;AAOO,IAAMC,YAAY,OAAOC,SAAmCC,UAAwB,CAAC,MAAC;AAC3F,QAAM,EAAEC,KAAKC,WAAU,IAAKF;AAE5B,QAAMG,UAAU,gBAAgBJ,UAAU,MAAMA,QAAQK,WAAU,IAAKL;AACvE,QAAMM,OAAO,MAAMF,QAAQG,QAAO;AAGlC,MAAIJ,YAAY;AACd,UAAMK,OAAO,IAAIC,KAAAA;AAEjBH,SAAKI,GAAG,aAAa,OAAOC,UAAAA;AAC1B,YAAMH,KAAKI,oBAAoB,YAAA;AAE7BC,gBAAQC,IAAIH,KAAAA;MACd,CAAA;IACF,CAAA;AAEAL,SAAKI,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,MAAItB,KAAK;AACP,UAAMI,KAAKmB,KAAKvB,GAAAA;EAClB;AAEA,SAAO;IAAEE;IAASE;EAAK;AACzB;",
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 +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":7676,"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":4881},"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"],"entryPoint":"packages/common/test-utils/src/playwright.ts","inputs":{"packages/common/test-utils/src/playwright.ts":{"bytesInOutput":1644},"packages/common/test-utils/src/lock.ts":{"bytesInOutput":416}},"bytes":2277}}}
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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAOO,IAAMC,YAAY,OAAOC,SAAmCC,UAAwB,CAAC,MAAC;AAC3F,QAAM,EAAEC,KAAKC,WAAU,IAAKF;AAE5B,QAAMG,UAAU,gBAAgBJ,UAAU,MAAMA,QAAQK,WAAU,IAAKL;AACvE,QAAMM,OAAO,MAAMF,QAAQG,QAAO;AAGlC,MAAIJ,YAAY;AACd,UAAMK,OAAO,IAAIvC,KAAAA;AAEjBqC,SAAKG,GAAG,aAAa,OAAOC,UAAAA;AAC1B,YAAMF,KAAKnC,oBAAoB,YAAA;AAE7BsC,gBAAQC,IAAIF,KAAAA;MACd,CAAA;IACF,CAAA;AAEAJ,SAAKG,GAAG,WAAW,OAAOI,QAAAA;AACxB,UAAI;AACF,cAAMC,cAAc3C,QAAQ4C,IAAIF,IAAIG,KAAI,EAAGC,IAAI,CAACC,MAAMA,EAAEC,UAAS,CAAA,CAAA;AACjE,cAAMX,KAAKnC,oBAAoB,YAAA;AAC7B,gBAAM2C,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,MAAInB,KAAK;AACP,UAAMI,KAAKgB,KAAKpB,GAAAA;EAClB;AAEA,SAAO;IAAEE;IAASE;EAAK;AACzB;",
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":7676,"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":4883},"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"],"entryPoint":"packages/common/test-utils/src/playwright.ts","inputs":{"packages/common/test-utils/src/playwright.ts":{"bytesInOutput":1644},"packages/common/test-utils/src/lock.ts":{"bytesInOutput":416}},"bytes":2370}}}
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;AAOO,IAAMC,YAAY,OAAOC,SAAmCC,UAAwB,CAAC,MAAC;AAC3F,QAAM,EAAEC,KAAKC,WAAU,IAAKF;AAE5B,QAAMG,UAAU,gBAAgBJ,UAAU,MAAMA,QAAQK,WAAU,IAAKL;AACvE,QAAMM,OAAO,MAAMF,QAAQG,QAAO;AAGlC,MAAIJ,YAAY;AACd,UAAMK,OAAO,IAAIC,KAAAA;AAEjBH,SAAKI,GAAG,aAAa,OAAOC,UAAAA;AAC1B,YAAMH,KAAKI,oBAAoB,YAAA;AAE7BC,gBAAQC,IAAIH,KAAAA;MACd,CAAA;IACF,CAAA;AAEAL,SAAKI,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,MAAItB,KAAK;AACP,UAAMI,KAAKmB,KAAKvB,GAAAA;EAClB;AAEA,SAAO;IAAEE;IAASE;EAAK;AACzB;",
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: import("@playwright/test").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;AAMhG,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;CACtB,CAAC;AAEF,eAAO,MAAM,SAAS,YAAmB,OAAO,GAAG,cAAc,YAAW,YAAY;;;EAwCvF,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.1",
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.1",
45
- "@dxos/node-std": "0.7.1"
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`;