@vscode/component-explorer-cli 0.2.1-14 → 0.2.1-140
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/README.md +6 -6
- package/dist/WorktreePool.d.ts +5 -4
- package/dist/WorktreePool.d.ts.map +1 -1
- package/dist/WorktreePool.js +3 -3
- package/dist/WorktreePool.js.map +1 -1
- package/dist/_virtual/_build-info.js +1 -1
- package/dist/browserPage.d.ts +55 -1
- package/dist/browserPage.d.ts.map +1 -1
- package/dist/browserPage.js +98 -6
- package/dist/browserPage.js.map +1 -1
- package/dist/commands/acceptCommand.d.ts +1 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +21 -14
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/checkStabilityCommand.d.ts +2 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
- package/dist/commands/checkStabilityCommand.js +25 -8
- package/dist/commands/checkStabilityCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts +1 -1
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +31 -22
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/inputArg.d.ts +33 -0
- package/dist/commands/inputArg.d.ts.map +1 -0
- package/dist/commands/inputArg.js +103 -0
- package/dist/commands/inputArg.js.map +1 -0
- package/dist/commands/mcpCommand.d.ts +0 -2
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +143 -75
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/renderCommand.d.ts +9 -1
- package/dist/commands/renderCommand.d.ts.map +1 -1
- package/dist/commands/renderCommand.js +317 -29
- package/dist/commands/renderCommand.js.map +1 -1
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +14 -11
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.js +10 -9
- package/dist/commands/serviceDiffCommitsCommand.js.map +1 -1
- package/dist/commands/watchCommand.d.ts +1 -0
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +31 -20
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/comparison.d.ts +4 -3
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +17 -14
- package/dist/comparison.js.map +1 -1
- package/dist/component-explorer-config.schema.json +55 -2
- package/dist/componentExplorer.d.ts +110 -12
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +177 -24
- package/dist/componentExplorer.js.map +1 -1
- package/dist/config.d.ts +33 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -27
- package/dist/config.js.map +1 -1
- package/dist/coverage.d.ts +64 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +212 -0
- package/dist/coverage.js.map +1 -0
- package/dist/daemon/DaemonService.d.ts +14 -5
- package/dist/daemon/DaemonService.d.ts.map +1 -1
- package/dist/daemon/DaemonService.js +47 -23
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/approvalStore.d.ts +2 -1
- package/dist/daemon/approvalStore.d.ts.map +1 -1
- package/dist/daemon/approvalStore.js +4 -3
- package/dist/daemon/approvalStore.js.map +1 -1
- package/dist/daemon/inProcessClient.js +2 -2
- package/dist/daemon/lifecycle.d.ts +4 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +1 -1
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/pipeClient.d.ts +2 -0
- package/dist/daemon/pipeClient.d.ts.map +1 -1
- package/dist/daemon/pipeClient.js +26 -8
- package/dist/daemon/pipeClient.js.map +1 -1
- package/dist/daemon/pipeName.d.ts +3 -3
- package/dist/daemon/pipeName.d.ts.map +1 -1
- package/dist/daemon/pipeName.js +1 -2
- package/dist/daemon/pipeName.js.map +1 -1
- package/dist/daemon/pipeServer.js +3 -3
- package/dist/daemon/version.d.ts +1 -1
- package/dist/daemon/version.js +2 -2
- package/dist/dependencyInstaller.d.ts +2 -1
- package/dist/dependencyInstaller.d.ts.map +1 -1
- package/dist/dependencyInstaller.js +4 -4
- package/dist/dependencyInstaller.js.map +1 -1
- package/dist/git/gitCommitResolver.d.ts +2 -1
- package/dist/git/gitCommitResolver.d.ts.map +1 -1
- package/dist/git/gitCommitResolver.js +8 -8
- package/dist/git/gitCommitResolver.js.map +1 -1
- package/dist/git/gitIndexResolver.d.ts +2 -1
- package/dist/git/gitIndexResolver.d.ts.map +1 -1
- package/dist/git/gitIndexResolver.js +7 -7
- package/dist/git/gitIndexResolver.js.map +1 -1
- package/dist/git/gitService.d.ts +5 -4
- package/dist/git/gitService.d.ts.map +1 -1
- package/dist/git/gitService.js.map +1 -1
- package/dist/git/gitUtils.d.ts +6 -5
- package/dist/git/gitUtils.d.ts.map +1 -1
- package/dist/git/gitUtils.js +5 -4
- package/dist/git/gitUtils.js.map +1 -1
- package/dist/git/gitWorktreeManager.d.ts +15 -14
- package/dist/git/gitWorktreeManager.d.ts.map +1 -1
- package/dist/git/gitWorktreeManager.js +10 -11
- package/dist/git/gitWorktreeManager.js.map +1 -1
- package/dist/git/testUtils.d.ts +2 -1
- package/dist/git/testUtils.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/js-component-explorer/packages/common/dist/explorerUrl.js +21 -0
- package/dist/js-component-explorer/packages/common/dist/explorerUrl.js.map +1 -0
- package/dist/js-component-explorer/packages/common/dist/renderManifest.js +68 -0
- package/dist/js-component-explorer/packages/common/dist/renderManifest.js.map +1 -0
- package/dist/js-component-explorer/packages/semver/dist/index.js.map +1 -0
- package/dist/js-component-explorer/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +1 -0
- package/dist/js-component-explorer/packages/simple-api/dist/chunk-TTRCY65Z.js.map +1 -0
- package/dist/js-component-explorer/packages/simple-api/dist/chunk-WNXMRXWV.js.map +1 -0
- package/dist/js-component-explorer/packages/simple-api/dist/express.js.map +1 -0
- package/dist/manifest.schema.json +44 -16
- package/dist/mcp/DaemonAccessor.d.ts +22 -0
- package/dist/mcp/DaemonAccessor.d.ts.map +1 -0
- package/dist/mcp/McpServer.d.ts +4 -19
- package/dist/mcp/McpServer.d.ts.map +1 -1
- package/dist/mcp/McpServer.js +299 -305
- package/dist/mcp/McpServer.js.map +1 -1
- package/dist/path.d.ts +30 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +78 -0
- package/dist/path.js.map +1 -0
- package/dist/processTree.d.ts +6 -1
- package/dist/processTree.d.ts.map +1 -1
- package/dist/processTree.js +48 -5
- package/dist/processTree.js.map +1 -1
- package/dist/renderManifest.js +1 -1
- package/dist/server/httpServer.d.ts +1 -1
- package/dist/server/httpServer.d.ts.map +1 -1
- package/dist/server/httpServer.js +4 -8
- package/dist/server/httpServer.js.map +1 -1
- package/dist/server/serverConfig.d.ts +23 -6
- package/dist/server/serverConfig.d.ts.map +1 -1
- package/dist/server/serverConfig.js +11 -18
- package/dist/server/serverConfig.js.map +1 -1
- package/dist/server/viteServer.d.ts +16 -1
- package/dist/server/viteServer.d.ts.map +1 -1
- package/dist/server/viteServer.js +86 -5
- package/dist/server/viteServer.js.map +1 -1
- package/dist/storage.d.ts +2 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/utils.d.ts +3 -30
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -24
- package/dist/utils.js.map +1 -1
- package/dist/visualCache.d.ts +2 -1
- package/dist/visualCache.d.ts.map +1 -1
- package/dist/visualCache.js +4 -3
- package/dist/visualCache.js.map +1 -1
- package/dist/viteProjectRef.d.ts +4 -12
- package/dist/viteProjectRef.d.ts.map +1 -1
- package/dist/viteProjectRef.js +9 -17
- package/dist/viteProjectRef.js.map +1 -1
- package/dist/vscode-observables/observables/dist/disposables.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
- package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +1 -1
- package/dist/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
- package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js → vscode-observables/observables/dist/observableInternal/reactions/createEffect.js} +9 -5
- package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffect.js.map +1 -0
- package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js → vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js} +1 -1
- package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
- package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utilsCancellation.js +2 -2
- package/dist/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
- package/package.json +11 -9
- package/dist/commands/artifactCommand.d.ts +0 -14
- package/dist/commands/artifactCommand.d.ts.map +0 -1
- package/dist/external/vscode-observables/observables/dist/disposables.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +0 -1
- package/dist/packages/common/dist/renderManifest.js +0 -46
- package/dist/packages/common/dist/renderManifest.js.map +0 -1
- package/dist/packages/semver/dist/index.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +0 -1
- package/dist/packages/simple-api/dist/express.js.map +0 -1
- /package/dist/{packages → js-component-explorer/packages}/semver/dist/index.js +0 -0
- /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/chunk-FJ7AVNQE.js +0 -0
- /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/chunk-TTRCY65Z.js +0 -0
- /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/chunk-WNXMRXWV.js +0 -0
- /package/dist/{packages → js-component-explorer/packages}/simple-api/dist/express.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/disposables.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/base.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/commonFacade/deps.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugLocation.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugName.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/index.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/consoleObservableLogger.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/logging.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/baseObservable.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derived.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derivedImpl.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableFromEvent.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableValue.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/transaction.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utils.js +0 -0
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"type": "string"
|
|
133
133
|
},
|
|
134
134
|
"cwd": {
|
|
135
|
-
"description": "Working directory for cmd, relative to this config file (default:
|
|
135
|
+
"description": "Working directory for cmd, relative to this config file (default: \".\")",
|
|
136
136
|
"type": "string"
|
|
137
137
|
},
|
|
138
138
|
"wait": {
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
"type": "string"
|
|
298
298
|
},
|
|
299
299
|
"cwd": {
|
|
300
|
-
"description": "Working directory for cmd, relative to this config file (default:
|
|
300
|
+
"description": "Working directory for cmd, relative to this config file (default: \".\")",
|
|
301
301
|
"type": "string"
|
|
302
302
|
},
|
|
303
303
|
"wait": {
|
|
@@ -375,6 +375,59 @@
|
|
|
375
375
|
"additionalProperties": false,
|
|
376
376
|
"description": "HTTP redirection server that redirects to the session URL"
|
|
377
377
|
},
|
|
378
|
+
"coverage": {
|
|
379
|
+
"type": "object",
|
|
380
|
+
"properties": {
|
|
381
|
+
"mode": {
|
|
382
|
+
"description": "Aggregate coverage across all fixtures (\"total\", default) or emit one report per fixture (\"per-fixture\")",
|
|
383
|
+
"type": "string",
|
|
384
|
+
"enum": [
|
|
385
|
+
"total",
|
|
386
|
+
"per-fixture"
|
|
387
|
+
]
|
|
388
|
+
},
|
|
389
|
+
"js": {
|
|
390
|
+
"description": "JavaScript coverage strategy. \"istanbul\" (default) instruments source via vite-plugin-istanbul. \"v8\" uses Playwright's native V8 coverage and converts to Istanbul. false disables JS coverage",
|
|
391
|
+
"anyOf": [
|
|
392
|
+
{
|
|
393
|
+
"type": "string",
|
|
394
|
+
"enum": [
|
|
395
|
+
"istanbul",
|
|
396
|
+
"v8"
|
|
397
|
+
]
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"type": "boolean",
|
|
401
|
+
"const": false
|
|
402
|
+
}
|
|
403
|
+
]
|
|
404
|
+
},
|
|
405
|
+
"css": {
|
|
406
|
+
"description": "Collect CSS coverage via Playwright (raw range data, written separately). Default: false",
|
|
407
|
+
"type": "boolean"
|
|
408
|
+
},
|
|
409
|
+
"outputDir": {
|
|
410
|
+
"description": "Output directory for coverage JSON, relative to the render target dir (default: \"coverage\")",
|
|
411
|
+
"type": "string"
|
|
412
|
+
},
|
|
413
|
+
"include": {
|
|
414
|
+
"description": "Glob patterns of files to instrument (Istanbul only). Default: [\"**/src/**/*.{js,ts,jsx,tsx,mjs,cjs}\"]",
|
|
415
|
+
"type": "array",
|
|
416
|
+
"items": {
|
|
417
|
+
"type": "string"
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"exclude": {
|
|
421
|
+
"description": "Glob patterns of files to skip (Istanbul only). Default: [\"**/*.fixture.{js,ts,jsx,tsx}\", \"**/node_modules/**\", \"**/*.{test,spec}.*\"]",
|
|
422
|
+
"type": "array",
|
|
423
|
+
"items": {
|
|
424
|
+
"type": "string"
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
"additionalProperties": false,
|
|
429
|
+
"description": "Code coverage configuration for `render --coverage`"
|
|
430
|
+
},
|
|
378
431
|
"$schema": {
|
|
379
432
|
"type": "string",
|
|
380
433
|
"description": "URL of the JSON Schema for this config file"
|
|
@@ -1,16 +1,48 @@
|
|
|
1
|
-
import type { BrowserPageFactory } from './browserPage.js';
|
|
1
|
+
import type { BrowserPage, BrowserPageFactory } from './browserPage.js';
|
|
2
2
|
import type { ComponentExplorerHttpServer } from './server/types.js';
|
|
3
3
|
import type { IObservable } from '@vscode/observables';
|
|
4
|
+
import type { IJsonSchema } from '@vscode/component-explorer-common';
|
|
4
5
|
import { type ILogger } from './logger.js';
|
|
5
6
|
import { SourceTreeId } from './sourceTreeId.js';
|
|
7
|
+
export interface ScreenshotOptions {
|
|
8
|
+
/**
|
|
9
|
+
* If true, reload the browser page if the fixture had an error during rendering. This can help avoid contamination of subsequent renders when the page is in a bad state, at the cost of longer execution time.
|
|
10
|
+
*/
|
|
11
|
+
readonly reloadOnError?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* If true, reload the browser page before rendering this fixture.
|
|
14
|
+
* Useful for bulk rendering to ensure each fixture starts from a clean page state.
|
|
15
|
+
*/
|
|
16
|
+
readonly reloadBeforeRender?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Arbitrary JSON-serializable data passed to the fixture's `RenderContext.input`.
|
|
19
|
+
* The fixture decides how to interpret it (e.g. theme switch, scenario selection).
|
|
20
|
+
* Must be JSON-serializable since it crosses the CLI → browser boundary.
|
|
21
|
+
*/
|
|
22
|
+
readonly input?: unknown;
|
|
23
|
+
/**
|
|
24
|
+
* If true, dispose the fixture after taking the screenshot and capture any
|
|
25
|
+
* errors / events that surface during dispose.
|
|
26
|
+
* Default: false — the fixture stays mounted until the next render, so
|
|
27
|
+
* `evaluate_js` can still operate on it. Use `disposeAfter` when you want to
|
|
28
|
+
* validate the teardown of a specific fixture.
|
|
29
|
+
*/
|
|
30
|
+
readonly disposeAfter?: boolean;
|
|
31
|
+
}
|
|
6
32
|
export interface ComponentExplorer {
|
|
7
33
|
readonly sourceTreeId: IObservable<SourceTreeId>;
|
|
8
34
|
listFixtures(): Promise<ListFixturesResult>;
|
|
9
|
-
screenshotFixture(fixtureId: string): Promise<ScreenshotResult>;
|
|
10
|
-
screenshotFixtureStabilityCheck(fixtureId: string): Promise<StabilityCheckResult>;
|
|
35
|
+
screenshotFixture(fixtureId: string, options?: ScreenshotOptions): Promise<ScreenshotResult>;
|
|
36
|
+
screenshotFixtureStabilityCheck(fixtureId: string, options?: ScreenshotOptions): Promise<StabilityCheckResult>;
|
|
11
37
|
evaluateJs(expression: string, fixtureId?: string): Promise<unknown>;
|
|
12
38
|
codeCoverage(id: FixtureId | FixtureGroupId): Promise<CoverageData>;
|
|
13
39
|
waitForUpdate(timeoutMs?: number): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Open the underlying browser page (if not already open) and return it.
|
|
42
|
+
* Used by coverage tooling to call `startJSCoverage` / `stopJSCoverage` on the
|
|
43
|
+
* exact same page used for fixture rendering.
|
|
44
|
+
*/
|
|
45
|
+
getOrOpenPage(): Promise<BrowserPage>;
|
|
14
46
|
dispose(): Promise<void>;
|
|
15
47
|
}
|
|
16
48
|
export interface FixtureInfo {
|
|
@@ -20,6 +52,8 @@ export interface FixtureInfo {
|
|
|
20
52
|
readonly background: 'light' | 'dark';
|
|
21
53
|
readonly labels: readonly string[];
|
|
22
54
|
readonly expectedVisualDescriptions: readonly string[];
|
|
55
|
+
/** JSON Schema describing the fixture's expected `input` object, if declared. */
|
|
56
|
+
readonly inputSchema?: IJsonSchema;
|
|
23
57
|
}
|
|
24
58
|
export interface ListFixturesResult {
|
|
25
59
|
readonly fixtures: FixtureInfo[];
|
|
@@ -47,31 +81,93 @@ export type RenderEventType = 'console.error' | 'console.warn' | 'console.log' |
|
|
|
47
81
|
export interface RenderEvent {
|
|
48
82
|
readonly type: RenderEventType;
|
|
49
83
|
readonly message: string;
|
|
84
|
+
readonly stack?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Errors / events captured while disposing a fixture.
|
|
88
|
+
* `previousDispose` is populated when a screenshot's implicit dispose of the
|
|
89
|
+
* previous fixture surfaced something; `currentDispose` is populated when
|
|
90
|
+
* `disposeAfter: true` was requested.
|
|
91
|
+
*
|
|
92
|
+
* `hasError` is a derived getter: `true` when any exception was captured
|
|
93
|
+
* or a significant event (console.error / window.error / unhandledrejection) occurred.
|
|
94
|
+
*/
|
|
95
|
+
export declare class DisposeReport {
|
|
96
|
+
readonly errors: readonly ExceptionError[];
|
|
97
|
+
readonly events: readonly RenderEvent[];
|
|
98
|
+
constructor(data: {
|
|
99
|
+
readonly errors: readonly ExceptionError[];
|
|
100
|
+
readonly events: readonly RenderEvent[];
|
|
101
|
+
});
|
|
102
|
+
get hasError(): boolean;
|
|
103
|
+
static from(raw: {
|
|
104
|
+
errors: readonly ExceptionError[];
|
|
105
|
+
events: readonly RenderEvent[];
|
|
106
|
+
}): DisposeReport;
|
|
107
|
+
static fromIfSignificant(raw: {
|
|
108
|
+
errors: readonly ExceptionError[];
|
|
109
|
+
events: readonly RenderEvent[];
|
|
110
|
+
}): DisposeReport | undefined;
|
|
50
111
|
}
|
|
51
112
|
/**
|
|
52
113
|
* Result of taking a screenshot, including any errors captured during rendering.
|
|
114
|
+
*
|
|
115
|
+
* `hasError` is a derived getter that is `true` when any phase (render,
|
|
116
|
+
* capture, previousDispose, or currentDispose) reported an error so that consumers
|
|
117
|
+
* never need to combine the flags manually.
|
|
53
118
|
*/
|
|
54
|
-
export
|
|
119
|
+
export declare class ScreenshotResult {
|
|
55
120
|
readonly image: Uint8Array | undefined;
|
|
56
|
-
readonly
|
|
57
|
-
readonly
|
|
121
|
+
readonly renderHasError: boolean;
|
|
122
|
+
readonly renderError?: ExceptionError;
|
|
123
|
+
readonly captureError?: ExceptionError;
|
|
58
124
|
readonly events: RenderEvent[];
|
|
59
|
-
readonly
|
|
125
|
+
readonly output?: unknown;
|
|
60
126
|
readonly renderTimeMs: {
|
|
61
127
|
readonly sync: number;
|
|
62
128
|
readonly total: number;
|
|
63
129
|
};
|
|
130
|
+
readonly previousDispose?: DisposeReport;
|
|
131
|
+
readonly currentDispose?: DisposeReport;
|
|
132
|
+
constructor(data: {
|
|
133
|
+
readonly image: Uint8Array | undefined;
|
|
134
|
+
readonly renderHasError: boolean;
|
|
135
|
+
readonly error?: ExceptionError;
|
|
136
|
+
readonly captureError?: ExceptionError;
|
|
137
|
+
readonly events: RenderEvent[];
|
|
138
|
+
readonly output?: unknown;
|
|
139
|
+
readonly renderTimeMs: {
|
|
140
|
+
readonly sync: number;
|
|
141
|
+
readonly total: number;
|
|
142
|
+
};
|
|
143
|
+
readonly previousDispose?: DisposeReport;
|
|
144
|
+
readonly currentDispose?: DisposeReport;
|
|
145
|
+
});
|
|
146
|
+
get error(): ExceptionError | undefined;
|
|
147
|
+
get hasError(): boolean;
|
|
64
148
|
}
|
|
65
149
|
export interface StabilityScreenshot {
|
|
66
150
|
readonly image: Uint8Array;
|
|
67
151
|
readonly delayMs: number;
|
|
68
152
|
}
|
|
69
|
-
export
|
|
153
|
+
export declare class StabilityCheckResult {
|
|
70
154
|
readonly screenshots: readonly StabilityScreenshot[];
|
|
71
|
-
readonly
|
|
155
|
+
readonly renderHasError: boolean;
|
|
72
156
|
readonly error?: ExceptionError;
|
|
73
157
|
readonly events: RenderEvent[];
|
|
74
|
-
readonly
|
|
158
|
+
readonly output?: unknown;
|
|
159
|
+
readonly previousDispose?: DisposeReport;
|
|
160
|
+
readonly currentDispose?: DisposeReport;
|
|
161
|
+
constructor(data: {
|
|
162
|
+
readonly screenshots: readonly StabilityScreenshot[];
|
|
163
|
+
readonly renderHasError: boolean;
|
|
164
|
+
readonly error?: ExceptionError;
|
|
165
|
+
readonly events: RenderEvent[];
|
|
166
|
+
readonly output?: unknown;
|
|
167
|
+
readonly previousDispose?: DisposeReport;
|
|
168
|
+
readonly currentDispose?: DisposeReport;
|
|
169
|
+
});
|
|
170
|
+
get hasError(): boolean;
|
|
75
171
|
}
|
|
76
172
|
export declare class BrowserComponentExplorer implements ComponentExplorer {
|
|
77
173
|
private readonly _browserPageFactory;
|
|
@@ -84,15 +180,17 @@ export declare class BrowserComponentExplorer implements ComponentExplorer {
|
|
|
84
180
|
readonly sourceTreeId: import("@vscode/observables").ISettableObservable<SourceTreeId, void>;
|
|
85
181
|
constructor(_browserPageFactory: BrowserPageFactory, _server: ComponentExplorerHttpServer, _logger?: ILogger);
|
|
86
182
|
private _bumpSourceTreeId;
|
|
183
|
+
getOrOpenPage(): Promise<BrowserPage>;
|
|
87
184
|
private _ensureReady;
|
|
185
|
+
private _reloadPage;
|
|
88
186
|
private _startPolling;
|
|
89
187
|
private _pollLoop;
|
|
90
188
|
private _waitForCliApi;
|
|
91
189
|
private _assertRuntimeVersionCompatibility;
|
|
92
190
|
private _getState;
|
|
93
191
|
listFixtures(): Promise<ListFixturesResult>;
|
|
94
|
-
screenshotFixture(fixtureId: string): Promise<ScreenshotResult>;
|
|
95
|
-
screenshotFixtureStabilityCheck(fixtureId: string): Promise<StabilityCheckResult>;
|
|
192
|
+
screenshotFixture(fixtureId: string, options?: ScreenshotOptions): Promise<ScreenshotResult>;
|
|
193
|
+
screenshotFixtureStabilityCheck(fixtureId: string, options?: ScreenshotOptions): Promise<StabilityCheckResult>;
|
|
96
194
|
evaluateJs(expression: string, fixtureId?: string): Promise<unknown>;
|
|
97
195
|
codeCoverage(_id: FixtureId | FixtureGroupId): Promise<CoverageData>;
|
|
98
196
|
waitForUpdate(timeoutMs?: number): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentExplorer.d.ts","sourceRoot":"","sources":["../src/componentExplorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"componentExplorer.d.ts","sourceRoot":"","sources":["../src/componentExplorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,107 @@
|
|
|
1
1
|
import { evaluateFn, explorerApiGetter, explorerApi, explorerApiOrUndefined } from './evaluateFn.js';
|
|
2
|
-
import './
|
|
3
|
-
import { observableValue } from './
|
|
4
|
-
import './
|
|
5
|
-
import './
|
|
6
|
-
import { waitForState } from './
|
|
7
|
-
import './
|
|
8
|
-
import './
|
|
2
|
+
import './vscode-observables/observables/dist/observableInternal/index.js';
|
|
3
|
+
import { observableValue } from './vscode-observables/observables/dist/observableInternal/observables/observableValue.js';
|
|
4
|
+
import './vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
5
|
+
import './vscode-observables/observables/dist/observableInternal/observables/derived.js';
|
|
6
|
+
import { waitForState } from './vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js';
|
|
7
|
+
import './vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
8
|
+
import './vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
9
9
|
import { nullLogger } from './logger.js';
|
|
10
10
|
import { SourceTreeId } from './sourceTreeId.js';
|
|
11
|
-
import
|
|
11
|
+
import './js-component-explorer/packages/common/dist/renderManifest.js';
|
|
12
|
+
import { buildExplorerUrl } from './js-component-explorer/packages/common/dist/explorerUrl.js';
|
|
13
|
+
import { EXPLORER_ROUTE } from './utils.js';
|
|
12
14
|
import { parseVersion, isCompatibleVersion, runtimeVersionNeededByCliText } from './daemon/version.js';
|
|
13
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Errors / events captured while disposing a fixture.
|
|
18
|
+
* `previousDispose` is populated when a screenshot's implicit dispose of the
|
|
19
|
+
* previous fixture surfaced something; `currentDispose` is populated when
|
|
20
|
+
* `disposeAfter: true` was requested.
|
|
21
|
+
*
|
|
22
|
+
* `hasError` is a derived getter: `true` when any exception was captured
|
|
23
|
+
* or a significant event (console.error / window.error / unhandledrejection) occurred.
|
|
24
|
+
*/
|
|
25
|
+
class DisposeReport {
|
|
26
|
+
errors;
|
|
27
|
+
events;
|
|
28
|
+
constructor(data) {
|
|
29
|
+
this.errors = data.errors;
|
|
30
|
+
this.events = data.events;
|
|
31
|
+
}
|
|
32
|
+
get hasError() {
|
|
33
|
+
return this.errors.length > 0
|
|
34
|
+
|| this.events.some(e => e.type === 'console.error' || e.type === 'window.error' || e.type === 'window.unhandledrejection');
|
|
35
|
+
}
|
|
36
|
+
static from(raw) {
|
|
37
|
+
return new DisposeReport({ errors: raw.errors, events: raw.events });
|
|
38
|
+
}
|
|
39
|
+
static fromIfSignificant(raw) {
|
|
40
|
+
const report = DisposeReport.from(raw);
|
|
41
|
+
return (report.hasError || report.events.length > 0) ? report : undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Result of taking a screenshot, including any errors captured during rendering.
|
|
46
|
+
*
|
|
47
|
+
* `hasError` is a derived getter that is `true` when any phase (render,
|
|
48
|
+
* capture, previousDispose, or currentDispose) reported an error so that consumers
|
|
49
|
+
* never need to combine the flags manually.
|
|
50
|
+
*/
|
|
51
|
+
class ScreenshotResult {
|
|
52
|
+
image;
|
|
53
|
+
renderHasError;
|
|
54
|
+
renderError;
|
|
55
|
+
captureError;
|
|
56
|
+
events;
|
|
57
|
+
output;
|
|
58
|
+
renderTimeMs;
|
|
59
|
+
previousDispose;
|
|
60
|
+
currentDispose;
|
|
61
|
+
constructor(data) {
|
|
62
|
+
this.image = data.image;
|
|
63
|
+
this.renderHasError = data.renderHasError;
|
|
64
|
+
this.renderError = data.error;
|
|
65
|
+
this.captureError = data.captureError;
|
|
66
|
+
this.events = data.events;
|
|
67
|
+
this.output = data.output;
|
|
68
|
+
this.renderTimeMs = data.renderTimeMs;
|
|
69
|
+
this.previousDispose = data.previousDispose;
|
|
70
|
+
this.currentDispose = data.currentDispose;
|
|
71
|
+
}
|
|
72
|
+
get error() {
|
|
73
|
+
return this.renderError ?? this.captureError;
|
|
74
|
+
}
|
|
75
|
+
get hasError() {
|
|
76
|
+
return this.renderHasError
|
|
77
|
+
|| !!this.captureError
|
|
78
|
+
|| !!this.previousDispose?.hasError
|
|
79
|
+
|| !!this.currentDispose?.hasError;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
class StabilityCheckResult {
|
|
83
|
+
screenshots;
|
|
84
|
+
renderHasError;
|
|
85
|
+
error;
|
|
86
|
+
events;
|
|
87
|
+
output;
|
|
88
|
+
previousDispose;
|
|
89
|
+
currentDispose;
|
|
90
|
+
constructor(data) {
|
|
91
|
+
this.screenshots = data.screenshots;
|
|
92
|
+
this.renderHasError = data.renderHasError;
|
|
93
|
+
this.error = data.error;
|
|
94
|
+
this.events = data.events;
|
|
95
|
+
this.output = data.output;
|
|
96
|
+
this.previousDispose = data.previousDispose;
|
|
97
|
+
this.currentDispose = data.currentDispose;
|
|
98
|
+
}
|
|
99
|
+
get hasError() {
|
|
100
|
+
return this.renderHasError
|
|
101
|
+
|| !!this.previousDispose?.hasError
|
|
102
|
+
|| !!this.currentDispose?.hasError;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
14
105
|
class BrowserComponentExplorer {
|
|
15
106
|
_browserPageFactory;
|
|
16
107
|
_server;
|
|
@@ -34,9 +125,12 @@ class BrowserComponentExplorer {
|
|
|
34
125
|
_bumpSourceTreeId() {
|
|
35
126
|
this.sourceTreeId.set(new SourceTreeId(Date.now().toString()), undefined);
|
|
36
127
|
}
|
|
128
|
+
getOrOpenPage() {
|
|
129
|
+
return this._ensureReady();
|
|
130
|
+
}
|
|
37
131
|
async _ensureReady() {
|
|
38
132
|
if (!this._page) {
|
|
39
|
-
const cliUrl = buildExplorerUrl({ baseUrl: this._server.url, mode: 'headless' });
|
|
133
|
+
const cliUrl = buildExplorerUrl({ baseUrl: this._server.url, pathname: EXPLORER_ROUTE, mode: 'headless' });
|
|
40
134
|
this._logger.debug(`Opening browser page: ${cliUrl}`);
|
|
41
135
|
this._page = await this._browserPageFactory.openPage(cliUrl);
|
|
42
136
|
await this._waitForCliApi(this._page);
|
|
@@ -44,6 +138,10 @@ class BrowserComponentExplorer {
|
|
|
44
138
|
}
|
|
45
139
|
return this._page;
|
|
46
140
|
}
|
|
141
|
+
async _reloadPage(page) {
|
|
142
|
+
await page.reload();
|
|
143
|
+
await this._waitForCliApi(page);
|
|
144
|
+
}
|
|
47
145
|
_startPolling() {
|
|
48
146
|
if (this._pollingActive) {
|
|
49
147
|
return;
|
|
@@ -59,15 +157,18 @@ class BrowserComponentExplorer {
|
|
|
59
157
|
const newState = await evaluateFn(page, (getApi, prev) => new Promise((resolve) => {
|
|
60
158
|
function check() {
|
|
61
159
|
const api = getApi();
|
|
160
|
+
// This allows faked time
|
|
161
|
+
const setTimeoutFn = typeof globalThis.setTimeout.originalFn === 'function' ?
|
|
162
|
+
globalThis.setTimeout.originalFn : globalThis.setTimeout;
|
|
62
163
|
if (!api) {
|
|
63
|
-
|
|
164
|
+
setTimeoutFn(check, 50);
|
|
64
165
|
return;
|
|
65
166
|
}
|
|
66
167
|
if (api.pageInstanceId !== prev.pageInstanceId || api.updateVersion > prev.updateVersion) {
|
|
67
168
|
resolve({ pageInstanceId: api.pageInstanceId, updateVersion: api.updateVersion, runtimeVersion: api.runtimeVersion });
|
|
68
169
|
}
|
|
69
170
|
else {
|
|
70
|
-
|
|
171
|
+
setTimeoutFn(check, 50);
|
|
71
172
|
}
|
|
72
173
|
}
|
|
73
174
|
check();
|
|
@@ -129,7 +230,7 @@ class BrowserComponentExplorer {
|
|
|
129
230
|
return { fixtures: [], loadError };
|
|
130
231
|
}
|
|
131
232
|
}
|
|
132
|
-
async screenshotFixture(fixtureId) {
|
|
233
|
+
async screenshotFixture(fixtureId, options) {
|
|
133
234
|
// Serialize screenshot calls — the single browser page can only render one fixture at a time
|
|
134
235
|
const prev = this._screenshotMutex;
|
|
135
236
|
let resolve;
|
|
@@ -140,20 +241,46 @@ class BrowserComponentExplorer {
|
|
|
140
241
|
const startTime = Date.now();
|
|
141
242
|
try {
|
|
142
243
|
const page = await this._ensureReady();
|
|
143
|
-
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, mode: 'headless', fixtureId });
|
|
244
|
+
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, pathname: EXPLORER_ROUTE, mode: 'headless', fixtureId });
|
|
144
245
|
this._logger.debug(`Rendering fixture: ${debugUrl}`);
|
|
145
|
-
|
|
246
|
+
if (options?.reloadBeforeRender) {
|
|
247
|
+
this._logger.debug(`Reloading page before render: ${fixtureId}`);
|
|
248
|
+
await this._reloadPage(page);
|
|
249
|
+
}
|
|
250
|
+
const input = options?.input;
|
|
251
|
+
const renderResult = await evaluateFn(page, (api, args) => api.renderFixture(args.id, args.input), explorerApi, { id: fixtureId, input });
|
|
146
252
|
this._logger.debug(`Render completed: ${fixtureId} (hasError=${renderResult.hasError}, ${Date.now() - startTime}ms)`);
|
|
147
253
|
const image = await page.screenshot(`document.getElementById('root').lastElementChild`);
|
|
148
254
|
this._logger.debug(`Screenshot done: ${fixtureId} (ok=${image.ok}, ${Date.now() - startTime}ms)`);
|
|
149
|
-
|
|
255
|
+
let currentDispose;
|
|
256
|
+
if (options?.disposeAfter) {
|
|
257
|
+
this._logger.debug(`Disposing fixture after screenshot: ${fixtureId}`);
|
|
258
|
+
const rawDispose = await evaluateFn(page, (api) => api.disposeCurrentFixture(), explorerApi);
|
|
259
|
+
currentDispose = DisposeReport.fromIfSignificant(rawDispose);
|
|
260
|
+
}
|
|
261
|
+
const result = new ScreenshotResult({
|
|
262
|
+
image: image.ok ? image.screenshot : undefined,
|
|
263
|
+
renderHasError: renderResult.hasError,
|
|
264
|
+
error: renderResult.error,
|
|
265
|
+
captureError: image.ok ? undefined : image.error,
|
|
266
|
+
events: renderResult.events,
|
|
267
|
+
output: renderResult.output,
|
|
268
|
+
renderTimeMs: renderResult.renderTimeMs,
|
|
269
|
+
previousDispose: renderResult.previousDispose ? DisposeReport.from(renderResult.previousDispose) : undefined,
|
|
270
|
+
currentDispose,
|
|
271
|
+
});
|
|
272
|
+
if (result.hasError && options?.reloadOnError) {
|
|
273
|
+
this._logger.debug(`Fixture had error, reloading page to avoid contamination: ${fixtureId}`);
|
|
274
|
+
await this._reloadPage(page);
|
|
275
|
+
}
|
|
276
|
+
return result;
|
|
150
277
|
}
|
|
151
278
|
finally {
|
|
152
279
|
this._logger.trace(`Screenshot mutex: released for ${fixtureId}`);
|
|
153
280
|
resolve();
|
|
154
281
|
}
|
|
155
282
|
}
|
|
156
|
-
async screenshotFixtureStabilityCheck(fixtureId) {
|
|
283
|
+
async screenshotFixtureStabilityCheck(fixtureId, options) {
|
|
157
284
|
const prev = this._screenshotMutex;
|
|
158
285
|
let resolve;
|
|
159
286
|
this._screenshotMutex = new Promise(r => { resolve = r; });
|
|
@@ -162,11 +289,16 @@ class BrowserComponentExplorer {
|
|
|
162
289
|
this._logger.trace(`Screenshot mutex: acquired for stability check ${fixtureId}`);
|
|
163
290
|
try {
|
|
164
291
|
const page = await this._ensureReady();
|
|
165
|
-
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, mode: 'headless', fixtureId });
|
|
292
|
+
const debugUrl = buildExplorerUrl({ baseUrl: this._server.url, pathname: EXPLORER_ROUTE, mode: 'headless', fixtureId });
|
|
166
293
|
this._logger.debug(`Stability check: ${debugUrl}`);
|
|
167
|
-
|
|
294
|
+
if (options?.reloadBeforeRender) {
|
|
295
|
+
this._logger.debug(`Reloading page before stability check: ${fixtureId}`);
|
|
296
|
+
await this._reloadPage(page);
|
|
297
|
+
}
|
|
298
|
+
const priorDispose = DisposeReport.fromIfSignificant(await evaluateFn(page, (api) => api.disposeCurrentFixture(), explorerApi));
|
|
168
299
|
const startTime = Date.now();
|
|
169
|
-
const
|
|
300
|
+
const input = options?.input;
|
|
301
|
+
const renderResult = await evaluateFn(page, (api, args) => api.renderFixture(args.id, args.input), explorerApi, { id: fixtureId, input });
|
|
170
302
|
const domExpr = `document.getElementById('root').lastElementChild`;
|
|
171
303
|
const image0 = await unwrapScreenshot(page, domExpr);
|
|
172
304
|
const delay0 = Date.now() - startTime;
|
|
@@ -185,14 +317,33 @@ class BrowserComponentExplorer {
|
|
|
185
317
|
const image2 = await unwrapScreenshot(page, domExpr);
|
|
186
318
|
const delay2 = Date.now() - startTime;
|
|
187
319
|
this._logger.debug(`Stability check done: ${fixtureId} (${delay2}ms total)`);
|
|
188
|
-
|
|
320
|
+
let currentDispose;
|
|
321
|
+
if (options?.disposeAfter) {
|
|
322
|
+
this._logger.debug(`Disposing fixture after stability check: ${fixtureId}`);
|
|
323
|
+
const rawDispose = await evaluateFn(page, (api) => api.disposeCurrentFixture(), explorerApi);
|
|
324
|
+
currentDispose = DisposeReport.fromIfSignificant(rawDispose);
|
|
325
|
+
}
|
|
326
|
+
const previousDispose = renderResult.previousDispose
|
|
327
|
+
? DisposeReport.from(renderResult.previousDispose)
|
|
328
|
+
: priorDispose;
|
|
329
|
+
const result = new StabilityCheckResult({
|
|
189
330
|
screenshots: [
|
|
190
331
|
{ image: image0, delayMs: delay0 },
|
|
191
332
|
{ image: image1, delayMs: delay1 },
|
|
192
333
|
{ image: image2, delayMs: delay2 },
|
|
193
334
|
],
|
|
194
|
-
|
|
195
|
-
|
|
335
|
+
renderHasError: renderResult.hasError,
|
|
336
|
+
error: renderResult.error,
|
|
337
|
+
events: renderResult.events,
|
|
338
|
+
output: renderResult.output,
|
|
339
|
+
previousDispose,
|
|
340
|
+
currentDispose,
|
|
341
|
+
});
|
|
342
|
+
if (renderResult.hasError && options?.reloadOnError) {
|
|
343
|
+
this._logger.debug(`Stability check fixture had error, reloading page to avoid contamination: ${fixtureId}`);
|
|
344
|
+
await this._reloadPage(page);
|
|
345
|
+
}
|
|
346
|
+
return result;
|
|
196
347
|
}
|
|
197
348
|
finally {
|
|
198
349
|
this._logger.trace(`Screenshot mutex: released for stability check ${fixtureId}`);
|
|
@@ -252,10 +403,12 @@ class BrowserComponentExplorer {
|
|
|
252
403
|
async function unwrapScreenshot(page, domExpr) {
|
|
253
404
|
const result = await page.screenshot(domExpr);
|
|
254
405
|
if (!result.ok) {
|
|
255
|
-
|
|
406
|
+
const error = new Error(result.error.message);
|
|
407
|
+
error.stack = result.error.stack ?? error.stack;
|
|
408
|
+
throw error;
|
|
256
409
|
}
|
|
257
410
|
return result.screenshot;
|
|
258
411
|
}
|
|
259
412
|
|
|
260
|
-
export { BrowserComponentExplorer };
|
|
413
|
+
export { BrowserComponentExplorer, DisposeReport, ScreenshotResult, StabilityCheckResult };
|
|
261
414
|
//# sourceMappingURL=componentExplorer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentExplorer.js","sources":["../src/componentExplorer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"componentExplorer.js","sources":["../src/componentExplorer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|