playwriter 0.0.89 → 0.0.103
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/aria-snapshot.d.ts +7 -3
- package/dist/aria-snapshot.d.ts.map +1 -1
- package/dist/aria-snapshot.js +76 -18
- package/dist/aria-snapshot.js.map +1 -1
- package/dist/aria-snapshot.test.js +94 -0
- package/dist/aria-snapshot.test.js.map +1 -1
- package/dist/bippy.js +1 -1
- package/dist/browser-config.d.ts +12 -1
- package/dist/browser-config.d.ts.map +1 -1
- package/dist/browser-config.js +101 -38
- package/dist/browser-config.js.map +1 -1
- package/dist/browser-launch.d.ts +17 -0
- package/dist/browser-launch.d.ts.map +1 -0
- package/dist/browser-launch.js +44 -0
- package/dist/browser-launch.js.map +1 -0
- package/dist/cdp-relay.d.ts.map +1 -1
- package/dist/cdp-relay.js +34 -10
- package/dist/cdp-relay.js.map +1 -1
- package/dist/channel-owner-inspect.test.d.ts +2 -0
- package/dist/channel-owner-inspect.test.d.ts.map +1 -0
- package/dist/channel-owner-inspect.test.js +75 -0
- package/dist/channel-owner-inspect.test.js.map +1 -0
- package/dist/chrome-discovery.d.ts +65 -0
- package/dist/chrome-discovery.d.ts.map +1 -0
- package/dist/chrome-discovery.js +165 -0
- package/dist/chrome-discovery.js.map +1 -0
- package/dist/chrome-discovery.test.d.ts +2 -0
- package/dist/chrome-discovery.test.d.ts.map +1 -0
- package/dist/chrome-discovery.test.js +41 -0
- package/dist/chrome-discovery.test.js.map +1 -0
- package/dist/cli.js +357 -53
- package/dist/cli.js.map +1 -1
- package/dist/executor.d.ts +44 -11
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +121 -55
- package/dist/executor.js.map +1 -1
- package/dist/executor.unit.test.js +29 -1
- package/dist/executor.unit.test.js.map +1 -1
- package/dist/extension/background.js +1704 -0
- package/dist/extension/icons/SolarCursorSquareBold.png +0 -0
- package/dist/extension/icons/icon-black-128.png +0 -0
- package/dist/extension/icons/icon-black-16.png +0 -0
- package/dist/extension/icons/icon-black-32.png +0 -0
- package/dist/extension/icons/icon-black-48.png +0 -0
- package/dist/extension/icons/icon-gray-128.png +0 -0
- package/dist/extension/icons/icon-gray-16.png +0 -0
- package/dist/extension/icons/icon-gray-32.png +0 -0
- package/dist/extension/icons/icon-gray-48.png +0 -0
- package/dist/extension/icons/icon-green-128.png +0 -0
- package/dist/extension/icons/icon-green-16.png +0 -0
- package/dist/extension/icons/icon-green-32.png +0 -0
- package/dist/extension/icons/icon-green-48.png +0 -0
- package/dist/extension/icons/playwriter-icon-black.png +0 -0
- package/dist/extension/icons/playwriter-icon-gray-disabled.png +0 -0
- package/dist/extension/icons/playwriter-icon-gray-disabled.svg +1 -0
- package/dist/extension/manifest.json +40 -0
- package/dist/extension/offscreen.js +214 -0
- package/dist/extension/src/offscreen.html +9 -0
- package/dist/extension/src/prism-bash.min.js +1 -0
- package/dist/extension/src/prism.min.js +1 -0
- package/dist/extension/src/welcome.html +399 -0
- package/dist/kitty-graphics.d.ts +22 -0
- package/dist/kitty-graphics.d.ts.map +1 -0
- package/dist/kitty-graphics.js +71 -0
- package/dist/kitty-graphics.js.map +1 -0
- package/dist/kitty-graphics.test.d.ts +2 -0
- package/dist/kitty-graphics.test.d.ts.map +1 -0
- package/dist/kitty-graphics.test.js +125 -0
- package/dist/kitty-graphics.test.js.map +1 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +76 -12
- package/dist/mcp.js.map +1 -1
- package/dist/package-paths.d.ts +3 -0
- package/dist/package-paths.d.ts.map +1 -0
- package/dist/package-paths.js +29 -0
- package/dist/package-paths.js.map +1 -0
- package/dist/prompt.md +4 -2
- package/dist/readability.js +1 -1
- package/dist/relay-core.test.js +14 -4
- package/dist/relay-core.test.js.map +1 -1
- package/dist/relay-navigation.test.d.ts.map +1 -1
- package/dist/relay-navigation.test.js +95 -1
- package/dist/relay-navigation.test.js.map +1 -1
- package/dist/scoped-fs.d.ts +5 -4
- package/dist/scoped-fs.d.ts.map +1 -1
- package/dist/scoped-fs.js +11 -9
- package/dist/scoped-fs.js.map +1 -1
- package/dist/scoped-fs.test.d.ts +5 -0
- package/dist/scoped-fs.test.d.ts.map +1 -0
- package/dist/scoped-fs.test.js +70 -0
- package/dist/scoped-fs.test.js.map +1 -0
- package/dist/screen-recording.d.ts +3 -6
- package/dist/screen-recording.d.ts.map +1 -1
- package/dist/screen-recording.js +7 -21
- package/dist/screen-recording.js.map +1 -1
- package/dist/selector-generator.js +1 -1
- package/dist/snapshot-tools.test.js +3 -4
- package/dist/snapshot-tools.test.js.map +1 -1
- package/dist/test-utils.d.ts +3 -1
- package/dist/test-utils.d.ts.map +1 -1
- package/dist/test-utils.js +24 -12
- package/dist/test-utils.js.map +1 -1
- package/package.json +6 -5
- package/src/aria-snapshot.test.ts +110 -0
- package/src/aria-snapshot.ts +86 -19
- package/src/aria-snapshots/contenteditable-interactive.txt +7 -0
- package/src/aria-snapshots/contenteditable-raw.txt +14 -0
- package/src/aria-snapshots/github-interactive.txt +0 -2
- package/src/aria-snapshots/github-raw.txt +0 -4
- package/src/aria-snapshots/hackernews-interactive.txt +240 -237
- package/src/aria-snapshots/hackernews-raw.txt +262 -258
- package/src/aria-snapshots/prosemirror-interactive.txt +63 -0
- package/src/aria-snapshots/prosemirror-raw.txt +141 -0
- package/src/assets/aria-labels-hacker-news.png +0 -0
- package/src/browser-config.ts +143 -37
- package/src/browser-launch.ts +75 -0
- package/src/cdp-relay.ts +46 -11
- package/src/channel-owner-inspect.test.ts +94 -0
- package/src/chrome-discovery.test.ts +50 -0
- package/src/chrome-discovery.ts +211 -0
- package/src/cli.ts +432 -59
- package/src/executor.ts +171 -72
- package/src/executor.unit.test.ts +32 -1
- package/src/kitty-graphics.test.ts +139 -0
- package/src/kitty-graphics.ts +79 -0
- package/src/mcp.ts +82 -12
- package/src/package-paths.ts +36 -0
- package/src/relay-core.test.ts +14 -4
- package/src/relay-navigation.test.ts +106 -1
- package/src/scoped-fs.test.ts +77 -0
- package/src/scoped-fs.ts +12 -9
- package/src/screen-recording.ts +7 -22
- package/src/skill.md +32 -2
- package/src/snapshot-tools.test.ts +3 -4
- package/src/snapshots/shadcn-ui-accessibility-full.md +181 -183
- package/src/snapshots/shadcn-ui-accessibility-interactive.md +119 -121
- package/src/test-utils.ts +25 -11
package/src/test-utils.ts
CHANGED
|
@@ -35,25 +35,35 @@ async function buildExtension({ port, distDir }: { port: number; distDir: string
|
|
|
35
35
|
|
|
36
36
|
export async function getExtensionServiceWorker(context: BrowserContext) {
|
|
37
37
|
let serviceWorkers = context.serviceWorkers().filter((sw) => sw.url().startsWith('chrome-extension://'))
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
serviceWorker = await context.waitForEvent('serviceworker', {
|
|
38
|
+
if (serviceWorkers.length === 0) {
|
|
39
|
+
await context.waitForEvent('serviceworker', {
|
|
41
40
|
predicate: (sw) => sw.url().startsWith('chrome-extension://'),
|
|
42
41
|
})
|
|
43
42
|
}
|
|
44
43
|
|
|
44
|
+
// Check all chrome-extension service workers for the playwriter one (the one
|
|
45
|
+
// that exposes toggleExtensionForActiveTab). This handles cases where
|
|
46
|
+
// additional test fixture extensions are loaded alongside playwriter.
|
|
45
47
|
for (let i = 0; i < 50; i++) {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
const allSws = context.serviceWorkers().filter((sw) => sw.url().startsWith('chrome-extension://'))
|
|
49
|
+
for (const sw of allSws) {
|
|
50
|
+
try {
|
|
51
|
+
const isReady = await sw.evaluate(() => {
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
return typeof globalThis.toggleExtensionForActiveTab === 'function'
|
|
54
|
+
})
|
|
55
|
+
if (isReady) {
|
|
56
|
+
return sw
|
|
57
|
+
}
|
|
58
|
+
} catch {
|
|
59
|
+
// Service worker might not be ready yet
|
|
60
|
+
}
|
|
52
61
|
}
|
|
53
62
|
await new Promise((r) => setTimeout(r, 100))
|
|
54
63
|
}
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
// Fallback to first service worker
|
|
66
|
+
return context.serviceWorkers().filter((sw) => sw.url().startsWith('chrome-extension://'))[0]
|
|
57
67
|
}
|
|
58
68
|
|
|
59
69
|
export interface TestContext {
|
|
@@ -66,11 +76,14 @@ export async function setupTestContext({
|
|
|
66
76
|
port,
|
|
67
77
|
tempDirPrefix,
|
|
68
78
|
toggleExtension = false,
|
|
79
|
+
additionalExtensions = [],
|
|
69
80
|
}: {
|
|
70
81
|
port: number
|
|
71
82
|
tempDirPrefix: string
|
|
72
83
|
/** Create initial page and toggle extension on it */
|
|
73
84
|
toggleExtension?: boolean
|
|
85
|
+
/** Additional extension paths to load alongside the main playwriter extension */
|
|
86
|
+
additionalExtensions?: string[]
|
|
74
87
|
}): Promise<TestContext> {
|
|
75
88
|
await killPortProcess({ port }).catch(() => {})
|
|
76
89
|
|
|
@@ -87,12 +100,13 @@ export async function setupTestContext({
|
|
|
87
100
|
|
|
88
101
|
const userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), tempDirPrefix))
|
|
89
102
|
const extensionPath = path.resolve('../extension', distDir)
|
|
103
|
+
const allExtensionPaths = [extensionPath, ...additionalExtensions].join(',')
|
|
90
104
|
|
|
91
105
|
const browserContext = await chromium.launchPersistentContext(userDataDir, {
|
|
92
106
|
channel: 'chromium',
|
|
93
107
|
headless: !process.env.HEADFUL,
|
|
94
108
|
colorScheme: 'dark',
|
|
95
|
-
args: [`--disable-extensions-except=${
|
|
109
|
+
args: [`--disable-extensions-except=${allExtensionPaths}`, `--load-extension=${allExtensionPaths}`],
|
|
96
110
|
})
|
|
97
111
|
|
|
98
112
|
const serviceWorker = await getExtensionServiceWorker(browserContext)
|