@stablyai/internal-playwright 0.1.0

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.
Files changed (297) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +168 -0
  4. package/ThirdPartyNotices.txt +6277 -0
  5. package/cli.js +19 -0
  6. package/index.d.ts +17 -0
  7. package/index.js +17 -0
  8. package/index.mjs +18 -0
  9. package/jsx-runtime.js +42 -0
  10. package/jsx-runtime.mjs +21 -0
  11. package/lib/agents/generateAgents.js +265 -0
  12. package/lib/agents/generator.md +102 -0
  13. package/lib/agents/healer.md +78 -0
  14. package/lib/agents/planner.md +135 -0
  15. package/lib/cli.js +274 -0
  16. package/lib/common/config.js +274 -0
  17. package/lib/common/config.js.map +7 -0
  18. package/lib/common/configLoader.js +377 -0
  19. package/lib/common/configLoader.js.map +7 -0
  20. package/lib/common/esmLoaderHost.js +102 -0
  21. package/lib/common/esmLoaderHost.js.map +7 -0
  22. package/lib/common/expectBundle.js +52 -0
  23. package/lib/common/expectBundle.js.map +7 -0
  24. package/lib/common/expectBundleImpl.js +389 -0
  25. package/lib/common/expectBundleImpl.js.map +7 -0
  26. package/lib/common/fixtures.js +302 -0
  27. package/lib/common/fixtures.js.map +7 -0
  28. package/lib/common/globals.js +58 -0
  29. package/lib/common/globals.js.map +7 -0
  30. package/lib/common/ipc.js +60 -0
  31. package/lib/common/ipc.js.map +7 -0
  32. package/lib/common/poolBuilder.js +85 -0
  33. package/lib/common/poolBuilder.js.map +7 -0
  34. package/lib/common/process.js +104 -0
  35. package/lib/common/process.js.map +7 -0
  36. package/lib/common/suiteUtils.js +140 -0
  37. package/lib/common/suiteUtils.js.map +7 -0
  38. package/lib/common/test.js +321 -0
  39. package/lib/common/test.js.map +7 -0
  40. package/lib/common/testLoader.js +100 -0
  41. package/lib/common/testLoader.js.map +7 -0
  42. package/lib/common/testType.js +310 -0
  43. package/lib/common/testType.js.map +7 -0
  44. package/lib/fsWatcher.js +67 -0
  45. package/lib/fsWatcher.js.map +7 -0
  46. package/lib/index.js +696 -0
  47. package/lib/index.js.map +7 -0
  48. package/lib/internalsForTest.js +42 -0
  49. package/lib/internalsForTest.js.map +7 -0
  50. package/lib/isomorphic/events.js +77 -0
  51. package/lib/isomorphic/events.js.map +7 -0
  52. package/lib/isomorphic/folders.js +30 -0
  53. package/lib/isomorphic/folders.js.map +7 -0
  54. package/lib/isomorphic/stringInternPool.js +69 -0
  55. package/lib/isomorphic/stringInternPool.js.map +7 -0
  56. package/lib/isomorphic/teleReceiver.js +507 -0
  57. package/lib/isomorphic/teleReceiver.js.map +7 -0
  58. package/lib/isomorphic/teleSuiteUpdater.js +137 -0
  59. package/lib/isomorphic/teleSuiteUpdater.js.map +7 -0
  60. package/lib/isomorphic/testServerConnection.js +211 -0
  61. package/lib/isomorphic/testServerConnection.js.map +7 -0
  62. package/lib/isomorphic/testServerInterface.js +16 -0
  63. package/lib/isomorphic/testServerInterface.js.map +7 -0
  64. package/lib/isomorphic/testTree.js +334 -0
  65. package/lib/isomorphic/testTree.js.map +7 -0
  66. package/lib/isomorphic/types.d.js +16 -0
  67. package/lib/isomorphic/types.d.js.map +7 -0
  68. package/lib/loader/loaderMain.js +59 -0
  69. package/lib/loader/loaderMain.js.map +7 -0
  70. package/lib/matchers/expect.js +325 -0
  71. package/lib/matchers/expect.js.map +7 -0
  72. package/lib/matchers/matcherHint.js +87 -0
  73. package/lib/matchers/matcherHint.js.map +7 -0
  74. package/lib/matchers/matchers.js +366 -0
  75. package/lib/matchers/matchers.js.map +7 -0
  76. package/lib/matchers/toBeTruthy.js +73 -0
  77. package/lib/matchers/toBeTruthy.js.map +7 -0
  78. package/lib/matchers/toEqual.js +99 -0
  79. package/lib/matchers/toEqual.js.map +7 -0
  80. package/lib/matchers/toHaveURL.js +102 -0
  81. package/lib/matchers/toHaveURL.js.map +7 -0
  82. package/lib/matchers/toMatchAriaSnapshot.js +159 -0
  83. package/lib/matchers/toMatchAriaSnapshot.js.map +7 -0
  84. package/lib/matchers/toMatchSnapshot.js +359 -0
  85. package/lib/matchers/toMatchSnapshot.js.map +7 -0
  86. package/lib/matchers/toMatchText.js +99 -0
  87. package/lib/matchers/toMatchText.js.map +7 -0
  88. package/lib/mcp/browser/actions.d.js +16 -0
  89. package/lib/mcp/browser/backend.js +93 -0
  90. package/lib/mcp/browser/backend.js.map +7 -0
  91. package/lib/mcp/browser/browserContextFactory.js +296 -0
  92. package/lib/mcp/browser/browserServerBackend.js +76 -0
  93. package/lib/mcp/browser/codegen.js +66 -0
  94. package/lib/mcp/browser/config.js +385 -0
  95. package/lib/mcp/browser/context.js +287 -0
  96. package/lib/mcp/browser/response.js +228 -0
  97. package/lib/mcp/browser/sessionLog.js +160 -0
  98. package/lib/mcp/browser/tab.js +277 -0
  99. package/lib/mcp/browser/tool.js +30 -0
  100. package/lib/mcp/browser/tool.js.map +7 -0
  101. package/lib/mcp/browser/tools/common.js +63 -0
  102. package/lib/mcp/browser/tools/console.js +44 -0
  103. package/lib/mcp/browser/tools/dialogs.js +60 -0
  104. package/lib/mcp/browser/tools/evaluate.js +70 -0
  105. package/lib/mcp/browser/tools/files.js +58 -0
  106. package/lib/mcp/browser/tools/form.js +74 -0
  107. package/lib/mcp/browser/tools/install.js +69 -0
  108. package/lib/mcp/browser/tools/keyboard.js +85 -0
  109. package/lib/mcp/browser/tools/mouse.js +107 -0
  110. package/lib/mcp/browser/tools/navigate.js +62 -0
  111. package/lib/mcp/browser/tools/network.js +54 -0
  112. package/lib/mcp/browser/tools/pdf.js +59 -0
  113. package/lib/mcp/browser/tools/screenshot.js +88 -0
  114. package/lib/mcp/browser/tools/snapshot.js +182 -0
  115. package/lib/mcp/browser/tools/tabs.js +67 -0
  116. package/lib/mcp/browser/tools/tool.js +49 -0
  117. package/lib/mcp/browser/tools/tracing.js +74 -0
  118. package/lib/mcp/browser/tools/utils.js +100 -0
  119. package/lib/mcp/browser/tools/verify.js +154 -0
  120. package/lib/mcp/browser/tools/wait.js +63 -0
  121. package/lib/mcp/browser/tools.js +80 -0
  122. package/lib/mcp/browser/tools.js.map +7 -0
  123. package/lib/mcp/browser/watchdog.js +44 -0
  124. package/lib/mcp/config.d.js +16 -0
  125. package/lib/mcp/extension/cdpRelay.js +351 -0
  126. package/lib/mcp/extension/extensionContextFactory.js +75 -0
  127. package/lib/mcp/extension/protocol.js +28 -0
  128. package/lib/mcp/index.js +61 -0
  129. package/lib/mcp/log.js +35 -0
  130. package/lib/mcp/program.js +96 -0
  131. package/lib/mcp/sdk/bundle.js +81 -0
  132. package/lib/mcp/sdk/bundle.js.map +7 -0
  133. package/lib/mcp/sdk/call.js +49 -0
  134. package/lib/mcp/sdk/call.js.map +7 -0
  135. package/lib/mcp/sdk/exports.js +32 -0
  136. package/lib/mcp/sdk/exports.js.map +7 -0
  137. package/lib/mcp/sdk/http.js +187 -0
  138. package/lib/mcp/sdk/http.js.map +7 -0
  139. package/lib/mcp/sdk/inProcessTransport.js +71 -0
  140. package/lib/mcp/sdk/inProcessTransport.js.map +7 -0
  141. package/lib/mcp/sdk/mdb.js +206 -0
  142. package/lib/mcp/sdk/mdb.js.map +7 -0
  143. package/lib/mcp/sdk/proxyBackend.js +128 -0
  144. package/lib/mcp/sdk/proxyBackend.js.map +7 -0
  145. package/lib/mcp/sdk/server.js +189 -0
  146. package/lib/mcp/sdk/server.js.map +7 -0
  147. package/lib/mcp/sdk/tool.js +51 -0
  148. package/lib/mcp/sdk/tool.js.map +7 -0
  149. package/lib/mcp/test/backend.js +67 -0
  150. package/lib/mcp/test/backend.js.map +7 -0
  151. package/lib/mcp/test/browserBackend.js +98 -0
  152. package/lib/mcp/test/context.js +48 -0
  153. package/lib/mcp/test/context.js.map +7 -0
  154. package/lib/mcp/test/generatorTools.js +122 -0
  155. package/lib/mcp/test/plannerTools.js +46 -0
  156. package/lib/mcp/test/seed.js +72 -0
  157. package/lib/mcp/test/streams.js +39 -0
  158. package/lib/mcp/test/streams.js.map +7 -0
  159. package/lib/mcp/test/testBackend.js +97 -0
  160. package/lib/mcp/test/testContext.js +176 -0
  161. package/lib/mcp/test/testTool.js +30 -0
  162. package/lib/mcp/test/testTools.js +115 -0
  163. package/lib/mcp/test/tool.js +30 -0
  164. package/lib/mcp/test/tool.js.map +7 -0
  165. package/lib/mcp/test/tools.js +150 -0
  166. package/lib/mcp/test/tools.js.map +7 -0
  167. package/lib/mcp/vscode/host.js +187 -0
  168. package/lib/mcp/vscode/main.js +77 -0
  169. package/lib/mcpBundleImpl.js +41 -0
  170. package/lib/mcpBundleImpl.js.map +7 -0
  171. package/lib/plugins/gitCommitInfoPlugin.js +198 -0
  172. package/lib/plugins/gitCommitInfoPlugin.js.map +7 -0
  173. package/lib/plugins/index.js +28 -0
  174. package/lib/plugins/index.js.map +7 -0
  175. package/lib/plugins/webServerPlugin.js +209 -0
  176. package/lib/plugins/webServerPlugin.js.map +7 -0
  177. package/lib/program.js +412 -0
  178. package/lib/program.js.map +7 -0
  179. package/lib/reporters/base.js +609 -0
  180. package/lib/reporters/base.js.map +7 -0
  181. package/lib/reporters/blob.js +135 -0
  182. package/lib/reporters/blob.js.map +7 -0
  183. package/lib/reporters/dot.js +82 -0
  184. package/lib/reporters/dot.js.map +7 -0
  185. package/lib/reporters/empty.js +32 -0
  186. package/lib/reporters/empty.js.map +7 -0
  187. package/lib/reporters/github.js +128 -0
  188. package/lib/reporters/github.js.map +7 -0
  189. package/lib/reporters/html.js +644 -0
  190. package/lib/reporters/html.js.map +7 -0
  191. package/lib/reporters/internalReporter.js +130 -0
  192. package/lib/reporters/internalReporter.js.map +7 -0
  193. package/lib/reporters/json.js +254 -0
  194. package/lib/reporters/json.js.map +7 -0
  195. package/lib/reporters/junit.js +230 -0
  196. package/lib/reporters/junit.js.map +7 -0
  197. package/lib/reporters/line.js +113 -0
  198. package/lib/reporters/line.js.map +7 -0
  199. package/lib/reporters/list.js +235 -0
  200. package/lib/reporters/list.js.map +7 -0
  201. package/lib/reporters/listModeReporter.js +69 -0
  202. package/lib/reporters/listModeReporter.js.map +7 -0
  203. package/lib/reporters/markdown.js +144 -0
  204. package/lib/reporters/markdown.js.map +7 -0
  205. package/lib/reporters/merge.js +535 -0
  206. package/lib/reporters/merge.js.map +7 -0
  207. package/lib/reporters/multiplexer.js +104 -0
  208. package/lib/reporters/multiplexer.js.map +7 -0
  209. package/lib/reporters/reporterV2.js +102 -0
  210. package/lib/reporters/reporterV2.js.map +7 -0
  211. package/lib/reporters/teleEmitter.js +297 -0
  212. package/lib/reporters/teleEmitter.js.map +7 -0
  213. package/lib/reporters/versions/blobV1.js +16 -0
  214. package/lib/reporters/versions/blobV1.js.map +7 -0
  215. package/lib/runner/dispatcher.js +491 -0
  216. package/lib/runner/dispatcher.js.map +7 -0
  217. package/lib/runner/failureTracker.js +72 -0
  218. package/lib/runner/failureTracker.js.map +7 -0
  219. package/lib/runner/lastRun.js +77 -0
  220. package/lib/runner/lastRun.js.map +7 -0
  221. package/lib/runner/loadUtils.js +333 -0
  222. package/lib/runner/loadUtils.js.map +7 -0
  223. package/lib/runner/loaderHost.js +89 -0
  224. package/lib/runner/loaderHost.js.map +7 -0
  225. package/lib/runner/processHost.js +161 -0
  226. package/lib/runner/processHost.js.map +7 -0
  227. package/lib/runner/projectUtils.js +241 -0
  228. package/lib/runner/projectUtils.js.map +7 -0
  229. package/lib/runner/rebase.js +189 -0
  230. package/lib/runner/rebase.js.map +7 -0
  231. package/lib/runner/reporters.js +137 -0
  232. package/lib/runner/reporters.js.map +7 -0
  233. package/lib/runner/runner.js +173 -0
  234. package/lib/runner/sigIntWatcher.js +96 -0
  235. package/lib/runner/sigIntWatcher.js.map +7 -0
  236. package/lib/runner/taskRunner.js +127 -0
  237. package/lib/runner/taskRunner.js.map +7 -0
  238. package/lib/runner/tasks.js +410 -0
  239. package/lib/runner/tasks.js.map +7 -0
  240. package/lib/runner/testGroups.js +117 -0
  241. package/lib/runner/testGroups.js.map +7 -0
  242. package/lib/runner/testRunner.js +390 -0
  243. package/lib/runner/testRunner.js.map +7 -0
  244. package/lib/runner/testServer.js +264 -0
  245. package/lib/runner/testServer.js.map +7 -0
  246. package/lib/runner/uiMode.js +271 -0
  247. package/lib/runner/uiModeReporter.js +30 -0
  248. package/lib/runner/uiModeReporter.js.map +7 -0
  249. package/lib/runner/vcs.js +72 -0
  250. package/lib/runner/vcs.js.map +7 -0
  251. package/lib/runner/watchMode.js +395 -0
  252. package/lib/runner/watchMode.js.map +7 -0
  253. package/lib/runner/workerHost.js +95 -0
  254. package/lib/runner/workerHost.js.map +7 -0
  255. package/lib/store.js +98 -0
  256. package/lib/third_party/pirates.js +62 -0
  257. package/lib/third_party/pirates.js.map +7 -0
  258. package/lib/third_party/tsconfig-loader.js +103 -0
  259. package/lib/third_party/tsconfig-loader.js.map +7 -0
  260. package/lib/transform/babelBundle.js +43 -0
  261. package/lib/transform/babelBundle.js.map +7 -0
  262. package/lib/transform/babelBundleImpl.js +461 -0
  263. package/lib/transform/babelBundleImpl.js.map +7 -0
  264. package/lib/transform/compilationCache.js +272 -0
  265. package/lib/transform/compilationCache.js.map +7 -0
  266. package/lib/transform/esmLoader.js +104 -0
  267. package/lib/transform/esmLoader.js.map +7 -0
  268. package/lib/transform/esmUtils.js +32 -0
  269. package/lib/transform/portTransport.js +67 -0
  270. package/lib/transform/portTransport.js.map +7 -0
  271. package/lib/transform/transform.js +293 -0
  272. package/lib/transform/transform.js.map +7 -0
  273. package/lib/util.js +403 -0
  274. package/lib/util.js.map +7 -0
  275. package/lib/utilsBundle.js +43 -0
  276. package/lib/utilsBundle.js.map +7 -0
  277. package/lib/utilsBundleImpl.js +100 -0
  278. package/lib/utilsBundleImpl.js.map +7 -0
  279. package/lib/worker/fixtureRunner.js +258 -0
  280. package/lib/worker/fixtureRunner.js.map +7 -0
  281. package/lib/worker/stepContext.js +34 -0
  282. package/lib/worker/testInfo.js +508 -0
  283. package/lib/worker/testInfo.js.map +7 -0
  284. package/lib/worker/testTracing.js +344 -0
  285. package/lib/worker/testTracing.js.map +7 -0
  286. package/lib/worker/timeoutManager.js +174 -0
  287. package/lib/worker/timeoutManager.js.map +7 -0
  288. package/lib/worker/util.js +31 -0
  289. package/lib/worker/util.js.map +7 -0
  290. package/lib/worker/workerMain.js +520 -0
  291. package/lib/worker/workerMain.js.map +7 -0
  292. package/package.json +74 -0
  293. package/test.d.ts +18 -0
  294. package/test.js +24 -0
  295. package/test.mjs +33 -0
  296. package/types/test.d.ts +10217 -0
  297. package/types/testReporter.d.ts +816 -0
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var teleSuiteUpdater_exports = {};
20
+ __export(teleSuiteUpdater_exports, {
21
+ TeleSuiteUpdater: () => TeleSuiteUpdater
22
+ });
23
+ module.exports = __toCommonJS(teleSuiteUpdater_exports);
24
+ var import_teleReceiver = require("./teleReceiver");
25
+ var import_testTree = require("./testTree");
26
+ class TeleSuiteUpdater {
27
+ constructor(options) {
28
+ this.loadErrors = [];
29
+ this.progress = {
30
+ total: 0,
31
+ passed: 0,
32
+ failed: 0,
33
+ skipped: 0
34
+ };
35
+ this._lastRunTestCount = 0;
36
+ this._receiver = new import_teleReceiver.TeleReporterReceiver(this._createReporter(), {
37
+ mergeProjects: true,
38
+ mergeTestCases: true,
39
+ resolvePath: (rootDir, relativePath) => rootDir + options.pathSeparator + relativePath,
40
+ clearPreviousResultsWhenTestBegins: true
41
+ });
42
+ this._options = options;
43
+ }
44
+ _createReporter() {
45
+ return {
46
+ version: () => "v2",
47
+ onConfigure: (c) => {
48
+ this.config = c;
49
+ this._lastRunReceiver = new import_teleReceiver.TeleReporterReceiver({
50
+ version: () => "v2",
51
+ onBegin: (suite) => {
52
+ this._lastRunTestCount = suite.allTests().length;
53
+ this._lastRunReceiver = void 0;
54
+ }
55
+ }, {
56
+ mergeProjects: true,
57
+ mergeTestCases: false,
58
+ resolvePath: (rootDir, relativePath) => rootDir + this._options.pathSeparator + relativePath
59
+ });
60
+ },
61
+ onBegin: (suite) => {
62
+ if (!this.rootSuite)
63
+ this.rootSuite = suite;
64
+ if (this._testResultsSnapshot) {
65
+ for (const test of this.rootSuite.allTests())
66
+ test.results = this._testResultsSnapshot?.get(test.id) || test.results;
67
+ this._testResultsSnapshot = void 0;
68
+ }
69
+ this.progress.total = this._lastRunTestCount;
70
+ this.progress.passed = 0;
71
+ this.progress.failed = 0;
72
+ this.progress.skipped = 0;
73
+ this._options.onUpdate(true);
74
+ },
75
+ onEnd: () => {
76
+ this._options.onUpdate(true);
77
+ },
78
+ onTestBegin: (test, testResult) => {
79
+ testResult[import_testTree.statusEx] = "running";
80
+ this._options.onUpdate();
81
+ },
82
+ onTestEnd: (test, testResult) => {
83
+ if (test.outcome() === "skipped")
84
+ ++this.progress.skipped;
85
+ else if (test.outcome() === "unexpected")
86
+ ++this.progress.failed;
87
+ else
88
+ ++this.progress.passed;
89
+ testResult[import_testTree.statusEx] = testResult.status;
90
+ this._options.onUpdate();
91
+ },
92
+ onError: (error) => this._handleOnError(error),
93
+ printsToStdio: () => false
94
+ };
95
+ }
96
+ processGlobalReport(report) {
97
+ const receiver = new import_teleReceiver.TeleReporterReceiver({
98
+ version: () => "v2",
99
+ onConfigure: (c) => {
100
+ this.config = c;
101
+ },
102
+ onError: (error) => this._handleOnError(error)
103
+ });
104
+ for (const message of report)
105
+ void receiver.dispatch(message);
106
+ }
107
+ processListReport(report) {
108
+ const tests = this.rootSuite?.allTests() || [];
109
+ this._testResultsSnapshot = new Map(tests.map((test) => [test.id, test.results]));
110
+ this._receiver.reset();
111
+ for (const message of report)
112
+ void this._receiver.dispatch(message);
113
+ }
114
+ processTestReportEvent(message) {
115
+ this._lastRunReceiver?.dispatch(message)?.catch(() => {
116
+ });
117
+ this._receiver.dispatch(message)?.catch(() => {
118
+ });
119
+ }
120
+ _handleOnError(error) {
121
+ this.loadErrors.push(error);
122
+ this._options.onError?.(error);
123
+ this._options.onUpdate();
124
+ }
125
+ asModel() {
126
+ return {
127
+ rootSuite: this.rootSuite || new import_teleReceiver.TeleSuite("", "root"),
128
+ config: this.config,
129
+ loadErrors: this.loadErrors,
130
+ progress: this.progress
131
+ };
132
+ }
133
+ }
134
+ // Annotate the CommonJS export names for ESM import in node:
135
+ 0 && (module.exports = {
136
+ TeleSuiteUpdater
137
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/isomorphic/teleSuiteUpdater.ts"],
4
+ "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TeleReporterReceiver, TeleSuite } from './teleReceiver';\nimport { statusEx } from './testTree';\n\nimport type * as reporterTypes from '../../types/testReporter';\nimport type { ReporterV2 } from '../reporters/reporterV2';\n\nexport type TeleSuiteUpdaterProgress = {\n total: number;\n passed: number;\n failed: number;\n skipped: number;\n};\n\nexport type TeleSuiteUpdaterTestModel = {\n config: reporterTypes.FullConfig;\n rootSuite: reporterTypes.Suite;\n loadErrors: reporterTypes.TestError[];\n progress: TeleSuiteUpdaterProgress;\n};\n\nexport type TeleSuiteUpdaterOptions = {\n onUpdate: (force?: boolean) => void,\n onError?: (error: reporterTypes.TestError) => void;\n pathSeparator: string;\n};\n\nexport class TeleSuiteUpdater {\n rootSuite: TeleSuite | undefined;\n config: reporterTypes.FullConfig | undefined;\n readonly loadErrors: reporterTypes.TestError[] = [];\n readonly progress: TeleSuiteUpdaterProgress = {\n total: 0,\n passed: 0,\n failed: 0,\n skipped: 0,\n };\n\n private _receiver: TeleReporterReceiver;\n private _lastRunReceiver: TeleReporterReceiver | undefined;\n private _lastRunTestCount = 0;\n private _options: TeleSuiteUpdaterOptions;\n private _testResultsSnapshot: Map<string, reporterTypes.TestResult[]> | undefined;\n\n constructor(options: TeleSuiteUpdaterOptions) {\n this._receiver = new TeleReporterReceiver(this._createReporter(), {\n mergeProjects: true,\n mergeTestCases: true,\n resolvePath: (rootDir, relativePath) => rootDir + options.pathSeparator + relativePath,\n clearPreviousResultsWhenTestBegins: true,\n });\n this._options = options;\n }\n\n private _createReporter(): ReporterV2 {\n return {\n version: () => 'v2',\n\n onConfigure: (c: reporterTypes.FullConfig) => {\n this.config = c;\n // TeleReportReceiver is merging everything into a single suite, so when we\n // run one test, we still get many tests via rootSuite.allTests().length.\n // To work around that, have a dedicated per-run receiver that will only have\n // suite for a single test run, and hence will have correct total.\n this._lastRunReceiver = new TeleReporterReceiver({\n version: () => 'v2',\n onBegin: (suite: reporterTypes.Suite) => {\n this._lastRunTestCount = suite.allTests().length;\n this._lastRunReceiver = undefined;\n }\n }, {\n mergeProjects: true,\n mergeTestCases: false,\n resolvePath: (rootDir, relativePath) => rootDir + this._options.pathSeparator + relativePath,\n });\n },\n\n onBegin: (suite: reporterTypes.Suite) => {\n if (!this.rootSuite)\n this.rootSuite = suite as TeleSuite;\n // As soon as new test tree is built add previous results, before calling onUpdate\n // to avoid flashing empty results in the UI.\n if (this._testResultsSnapshot) {\n for (const test of this.rootSuite.allTests())\n test.results = this._testResultsSnapshot?.get(test.id) || test.results;\n this._testResultsSnapshot = undefined;\n }\n this.progress.total = this._lastRunTestCount;\n this.progress.passed = 0;\n this.progress.failed = 0;\n this.progress.skipped = 0;\n this._options.onUpdate(true);\n },\n\n onEnd: () => {\n this._options.onUpdate(true);\n },\n\n onTestBegin: (test: reporterTypes.TestCase, testResult: reporterTypes.TestResult) => {\n (testResult as any)[statusEx] = 'running';\n this._options.onUpdate();\n },\n\n onTestEnd: (test: reporterTypes.TestCase, testResult: reporterTypes.TestResult) => {\n if (test.outcome() === 'skipped')\n ++this.progress.skipped;\n else if (test.outcome() === 'unexpected')\n ++this.progress.failed;\n else\n ++this.progress.passed;\n (testResult as any)[statusEx] = testResult.status;\n this._options.onUpdate();\n },\n\n onError: (error: reporterTypes.TestError) => this._handleOnError(error),\n\n printsToStdio: () => false,\n };\n }\n\n processGlobalReport(report: any[]) {\n const receiver = new TeleReporterReceiver({\n version: () => 'v2',\n onConfigure: (c: reporterTypes.FullConfig) => {\n this.config = c;\n },\n onError: (error: reporterTypes.TestError) => this._handleOnError(error)\n });\n for (const message of report)\n void receiver.dispatch(message);\n }\n\n processListReport(report: any[]) {\n // Save test results and reset all projects, the results will be restored after\n // new project structure is built.\n const tests = this.rootSuite?.allTests() || [];\n this._testResultsSnapshot = new Map(tests.map(test => [test.id, test.results]));\n this._receiver.reset();\n for (const message of report)\n void this._receiver.dispatch(message);\n }\n\n processTestReportEvent(message: any) {\n // The order of receiver dispatches matters here, we want to assign `lastRunTestCount`\n // before we use it.\n this._lastRunReceiver?.dispatch(message)?.catch(() => { });\n this._receiver.dispatch(message)?.catch(() => { });\n }\n\n private _handleOnError(error: reporterTypes.TestError) {\n this.loadErrors.push(error);\n this._options.onError?.(error);\n this._options.onUpdate();\n }\n\n asModel(): TeleSuiteUpdaterTestModel {\n return {\n rootSuite: this.rootSuite || new TeleSuite('', 'root'),\n config: this.config!,\n loadErrors: this.loadErrors,\n progress: this.progress,\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var testServerConnection_exports = {};
30
+ __export(testServerConnection_exports, {
31
+ TestServerConnection: () => TestServerConnection,
32
+ WebSocketTestServerTransport: () => WebSocketTestServerTransport
33
+ });
34
+ module.exports = __toCommonJS(testServerConnection_exports);
35
+ var events = __toESM(require("./events"));
36
+ class WebSocketTestServerTransport {
37
+ constructor(url) {
38
+ this._ws = new WebSocket(url);
39
+ }
40
+ onmessage(listener) {
41
+ this._ws.addEventListener("message", (event) => listener(event.data.toString()));
42
+ }
43
+ onopen(listener) {
44
+ this._ws.addEventListener("open", listener);
45
+ }
46
+ onerror(listener) {
47
+ this._ws.addEventListener("error", listener);
48
+ }
49
+ onclose(listener) {
50
+ this._ws.addEventListener("close", listener);
51
+ }
52
+ send(data) {
53
+ this._ws.send(data);
54
+ }
55
+ close() {
56
+ this._ws.close();
57
+ }
58
+ }
59
+ class TestServerConnection {
60
+ constructor(transport) {
61
+ this._onCloseEmitter = new events.EventEmitter();
62
+ this._onReportEmitter = new events.EventEmitter();
63
+ this._onStdioEmitter = new events.EventEmitter();
64
+ this._onTestFilesChangedEmitter = new events.EventEmitter();
65
+ this._onLoadTraceRequestedEmitter = new events.EventEmitter();
66
+ this._lastId = 0;
67
+ this._callbacks = /* @__PURE__ */ new Map();
68
+ this._isClosed = false;
69
+ this.onClose = this._onCloseEmitter.event;
70
+ this.onReport = this._onReportEmitter.event;
71
+ this.onStdio = this._onStdioEmitter.event;
72
+ this.onTestFilesChanged = this._onTestFilesChangedEmitter.event;
73
+ this.onLoadTraceRequested = this._onLoadTraceRequestedEmitter.event;
74
+ this._transport = transport;
75
+ this._transport.onmessage((data) => {
76
+ const message = JSON.parse(data);
77
+ const { id, result, error, method, params } = message;
78
+ if (id) {
79
+ const callback = this._callbacks.get(id);
80
+ if (!callback)
81
+ return;
82
+ this._callbacks.delete(id);
83
+ if (error)
84
+ callback.reject(new Error(error));
85
+ else
86
+ callback.resolve(result);
87
+ } else {
88
+ this._dispatchEvent(method, params);
89
+ }
90
+ });
91
+ const pingInterval = setInterval(() => this._sendMessage("ping").catch(() => {
92
+ }), 3e4);
93
+ this._connectedPromise = new Promise((f, r) => {
94
+ this._transport.onopen(f);
95
+ this._transport.onerror(r);
96
+ });
97
+ this._transport.onclose(() => {
98
+ this._isClosed = true;
99
+ this._onCloseEmitter.fire();
100
+ clearInterval(pingInterval);
101
+ });
102
+ }
103
+ isClosed() {
104
+ return this._isClosed;
105
+ }
106
+ async _sendMessage(method, params) {
107
+ const logForTest = globalThis.__logForTest;
108
+ logForTest?.({ method, params });
109
+ await this._connectedPromise;
110
+ const id = ++this._lastId;
111
+ const message = { id, method, params };
112
+ this._transport.send(JSON.stringify(message));
113
+ return new Promise((resolve, reject) => {
114
+ this._callbacks.set(id, { resolve, reject });
115
+ });
116
+ }
117
+ _sendMessageNoReply(method, params) {
118
+ this._sendMessage(method, params).catch(() => {
119
+ });
120
+ }
121
+ _dispatchEvent(method, params) {
122
+ if (method === "report")
123
+ this._onReportEmitter.fire(params);
124
+ else if (method === "stdio")
125
+ this._onStdioEmitter.fire(params);
126
+ else if (method === "testFilesChanged")
127
+ this._onTestFilesChangedEmitter.fire(params);
128
+ else if (method === "loadTraceRequested")
129
+ this._onLoadTraceRequestedEmitter.fire(params);
130
+ }
131
+ async initialize(params) {
132
+ await this._sendMessage("initialize", params);
133
+ }
134
+ async ping(params) {
135
+ await this._sendMessage("ping", params);
136
+ }
137
+ async pingNoReply(params) {
138
+ this._sendMessageNoReply("ping", params);
139
+ }
140
+ async watch(params) {
141
+ await this._sendMessage("watch", params);
142
+ }
143
+ watchNoReply(params) {
144
+ this._sendMessageNoReply("watch", params);
145
+ }
146
+ async open(params) {
147
+ await this._sendMessage("open", params);
148
+ }
149
+ openNoReply(params) {
150
+ this._sendMessageNoReply("open", params);
151
+ }
152
+ async resizeTerminal(params) {
153
+ await this._sendMessage("resizeTerminal", params);
154
+ }
155
+ resizeTerminalNoReply(params) {
156
+ this._sendMessageNoReply("resizeTerminal", params);
157
+ }
158
+ async checkBrowsers(params) {
159
+ return await this._sendMessage("checkBrowsers", params);
160
+ }
161
+ async installBrowsers(params) {
162
+ await this._sendMessage("installBrowsers", params);
163
+ }
164
+ async runGlobalSetup(params) {
165
+ return await this._sendMessage("runGlobalSetup", params);
166
+ }
167
+ async runGlobalTeardown(params) {
168
+ return await this._sendMessage("runGlobalTeardown", params);
169
+ }
170
+ async startDevServer(params) {
171
+ return await this._sendMessage("startDevServer", params);
172
+ }
173
+ async stopDevServer(params) {
174
+ return await this._sendMessage("stopDevServer", params);
175
+ }
176
+ async clearCache(params) {
177
+ return await this._sendMessage("clearCache", params);
178
+ }
179
+ async listFiles(params) {
180
+ return await this._sendMessage("listFiles", params);
181
+ }
182
+ async listTests(params) {
183
+ return await this._sendMessage("listTests", params);
184
+ }
185
+ async runTests(params) {
186
+ return await this._sendMessage("runTests", params);
187
+ }
188
+ async findRelatedTestFiles(params) {
189
+ return await this._sendMessage("findRelatedTestFiles", params);
190
+ }
191
+ async stopTests(params) {
192
+ await this._sendMessage("stopTests", params);
193
+ }
194
+ stopTestsNoReply(params) {
195
+ this._sendMessageNoReply("stopTests", params);
196
+ }
197
+ async closeGracefully(params) {
198
+ await this._sendMessage("closeGracefully", params);
199
+ }
200
+ close() {
201
+ try {
202
+ this._transport.close();
203
+ } catch {
204
+ }
205
+ }
206
+ }
207
+ // Annotate the CommonJS export names for ESM import in node:
208
+ 0 && (module.exports = {
209
+ TestServerConnection,
210
+ WebSocketTestServerTransport
211
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/isomorphic/testServerConnection.ts"],
4
+ "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as events from './events';\n\nimport type { TestServerInterface, TestServerInterfaceEvents } from '@testIsomorphic/testServerInterface';\n\n// -- Reuse boundary -- Everything below this line is reused in the vscode extension.\n\nexport interface TestServerTransport {\n onmessage(listener: (message: string) => void): void;\n onopen(listener: () => void): void;\n onerror(listener: () => void): void;\n onclose(listener: () => void): void;\n\n send(data: string): void;\n close(): void;\n}\n\nexport class WebSocketTestServerTransport implements TestServerTransport {\n private _ws: WebSocket;\n\n constructor(url: string | URL) {\n this._ws = new WebSocket(url);\n }\n\n onmessage(listener: (message: string) => void) {\n this._ws.addEventListener('message', event => listener(event.data.toString()));\n }\n\n onopen(listener: () => void) {\n this._ws.addEventListener('open', listener);\n }\n\n onerror(listener: () => void) {\n this._ws.addEventListener('error', listener);\n }\n\n onclose(listener: () => void) {\n this._ws.addEventListener('close', listener);\n }\n\n send(data: string) {\n this._ws.send(data);\n }\n\n close() {\n this._ws.close();\n }\n}\n\nexport class TestServerConnection implements TestServerInterface, TestServerInterfaceEvents {\n readonly onClose: events.Event<void>;\n readonly onReport: events.Event<any>;\n readonly onStdio: events.Event<{ type: 'stderr' | 'stdout'; text?: string | undefined; buffer?: string | undefined; }>;\n readonly onTestFilesChanged: events.Event<{ testFiles: string[] }>;\n readonly onLoadTraceRequested: events.Event<{ traceUrl: string }>;\n\n private _onCloseEmitter = new events.EventEmitter<void>();\n private _onReportEmitter = new events.EventEmitter<any>();\n private _onStdioEmitter = new events.EventEmitter<{ type: 'stderr' | 'stdout'; text?: string | undefined; buffer?: string | undefined; }>();\n private _onTestFilesChangedEmitter = new events.EventEmitter<{ testFiles: string[] }>();\n private _onLoadTraceRequestedEmitter = new events.EventEmitter<{ traceUrl: string }>();\n\n private _lastId = 0;\n private _transport: TestServerTransport;\n private _callbacks = new Map<number, { resolve: (arg: any) => void, reject: (arg: Error) => void }>();\n private _connectedPromise: Promise<void>;\n private _isClosed = false;\n\n constructor(transport: TestServerTransport) {\n this.onClose = this._onCloseEmitter.event;\n this.onReport = this._onReportEmitter.event;\n this.onStdio = this._onStdioEmitter.event;\n this.onTestFilesChanged = this._onTestFilesChangedEmitter.event;\n this.onLoadTraceRequested = this._onLoadTraceRequestedEmitter.event;\n\n this._transport = transport;\n this._transport.onmessage(data => {\n const message = JSON.parse(data);\n const { id, result, error, method, params } = message;\n if (id) {\n const callback = this._callbacks.get(id);\n if (!callback)\n return;\n this._callbacks.delete(id);\n if (error)\n callback.reject(new Error(error));\n else\n callback.resolve(result);\n } else {\n this._dispatchEvent(method, params);\n }\n });\n const pingInterval = setInterval(() => this._sendMessage('ping').catch(() => { }), 30000);\n this._connectedPromise = new Promise<void>((f, r) => {\n this._transport.onopen(f);\n this._transport.onerror(r);\n });\n this._transport.onclose(() => {\n this._isClosed = true;\n this._onCloseEmitter.fire();\n clearInterval(pingInterval);\n });\n }\n\n isClosed(): boolean {\n return this._isClosed;\n }\n\n private async _sendMessage(method: string, params?: any): Promise<any> {\n const logForTest = (globalThis as any).__logForTest;\n logForTest?.({ method, params });\n\n await this._connectedPromise;\n const id = ++this._lastId;\n const message = { id, method, params };\n this._transport.send(JSON.stringify(message));\n return new Promise((resolve, reject) => {\n this._callbacks.set(id, { resolve, reject });\n });\n }\n\n private _sendMessageNoReply(method: string, params?: any) {\n this._sendMessage(method, params).catch(() => { });\n }\n\n private _dispatchEvent(method: string, params?: any) {\n if (method === 'report')\n this._onReportEmitter.fire(params);\n else if (method === 'stdio')\n this._onStdioEmitter.fire(params);\n else if (method === 'testFilesChanged')\n this._onTestFilesChangedEmitter.fire(params);\n else if (method === 'loadTraceRequested')\n this._onLoadTraceRequestedEmitter.fire(params);\n }\n\n async initialize(params: Parameters<TestServerInterface['initialize']>[0]): ReturnType<TestServerInterface['initialize']> {\n await this._sendMessage('initialize', params);\n }\n\n async ping(params: Parameters<TestServerInterface['ping']>[0]): ReturnType<TestServerInterface['ping']> {\n await this._sendMessage('ping', params);\n }\n\n async pingNoReply(params: Parameters<TestServerInterface['ping']>[0]) {\n this._sendMessageNoReply('ping', params);\n }\n\n async watch(params: Parameters<TestServerInterface['watch']>[0]): ReturnType<TestServerInterface['watch']> {\n await this._sendMessage('watch', params);\n }\n\n watchNoReply(params: Parameters<TestServerInterface['watch']>[0]) {\n this._sendMessageNoReply('watch', params);\n }\n\n async open(params: Parameters<TestServerInterface['open']>[0]): ReturnType<TestServerInterface['open']> {\n await this._sendMessage('open', params);\n }\n\n openNoReply(params: Parameters<TestServerInterface['open']>[0]) {\n this._sendMessageNoReply('open', params);\n }\n\n async resizeTerminal(params: Parameters<TestServerInterface['resizeTerminal']>[0]): ReturnType<TestServerInterface['resizeTerminal']> {\n await this._sendMessage('resizeTerminal', params);\n }\n\n resizeTerminalNoReply(params: Parameters<TestServerInterface['resizeTerminal']>[0]) {\n this._sendMessageNoReply('resizeTerminal', params);\n }\n\n async checkBrowsers(params: Parameters<TestServerInterface['checkBrowsers']>[0]): ReturnType<TestServerInterface['checkBrowsers']> {\n return await this._sendMessage('checkBrowsers', params);\n }\n\n async installBrowsers(params: Parameters<TestServerInterface['installBrowsers']>[0]): ReturnType<TestServerInterface['installBrowsers']> {\n await this._sendMessage('installBrowsers', params);\n }\n\n async runGlobalSetup(params: Parameters<TestServerInterface['runGlobalSetup']>[0]): ReturnType<TestServerInterface['runGlobalSetup']> {\n return await this._sendMessage('runGlobalSetup', params);\n }\n\n async runGlobalTeardown(params: Parameters<TestServerInterface['runGlobalTeardown']>[0]): ReturnType<TestServerInterface['runGlobalTeardown']> {\n return await this._sendMessage('runGlobalTeardown', params);\n }\n\n async startDevServer(params: Parameters<TestServerInterface['startDevServer']>[0]): ReturnType<TestServerInterface['startDevServer']> {\n return await this._sendMessage('startDevServer', params);\n }\n\n async stopDevServer(params: Parameters<TestServerInterface['stopDevServer']>[0]): ReturnType<TestServerInterface['stopDevServer']> {\n return await this._sendMessage('stopDevServer', params);\n }\n\n async clearCache(params: Parameters<TestServerInterface['clearCache']>[0]): ReturnType<TestServerInterface['clearCache']> {\n return await this._sendMessage('clearCache', params);\n }\n\n async listFiles(params: Parameters<TestServerInterface['listFiles']>[0]): ReturnType<TestServerInterface['listFiles']> {\n return await this._sendMessage('listFiles', params);\n }\n\n async listTests(params: Parameters<TestServerInterface['listTests']>[0]): ReturnType<TestServerInterface['listTests']> {\n return await this._sendMessage('listTests', params);\n }\n\n async runTests(params: Parameters<TestServerInterface['runTests']>[0]): ReturnType<TestServerInterface['runTests']> {\n return await this._sendMessage('runTests', params);\n }\n\n async findRelatedTestFiles(params: Parameters<TestServerInterface['findRelatedTestFiles']>[0]): ReturnType<TestServerInterface['findRelatedTestFiles']> {\n return await this._sendMessage('findRelatedTestFiles', params);\n }\n\n async stopTests(params: Parameters<TestServerInterface['stopTests']>[0]): ReturnType<TestServerInterface['stopTests']> {\n await this._sendMessage('stopTests', params);\n }\n\n stopTestsNoReply(params: Parameters<TestServerInterface['stopTests']>[0]) {\n this._sendMessageNoReply('stopTests', params);\n }\n\n async closeGracefully(params: Parameters<TestServerInterface['closeGracefully']>[0]): ReturnType<TestServerInterface['closeGracefully']> {\n await this._sendMessage('closeGracefully', params);\n }\n\n close() {\n try {\n this._transport.close();\n } catch {\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var testServerInterface_exports = {};
16
+ module.exports = __toCommonJS(testServerInterface_exports);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/isomorphic/testServerInterface.ts"],
4
+ "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Event } from './events';\nimport type { JsonEvent } from './teleReceiver';\nimport type * as reporterTypes from '../../types/testReporter';\n\n// -- Reuse boundary -- Everything below this line is reused in the vscode extension.\n\nexport type ReportEntry = JsonEvent;\n\nexport interface TestServerInterface {\n initialize(params: {\n serializer?: string,\n closeOnDisconnect?: boolean,\n interceptStdio?: boolean,\n watchTestDirs?: boolean,\n populateDependenciesOnList?: boolean,\n }): Promise<void>;\n\n ping(params: {}): Promise<void>;\n\n watch(params: {\n fileNames: string[];\n }): Promise<void>;\n\n open(params: { location: reporterTypes.Location }): Promise<void>;\n\n resizeTerminal(params: { cols: number, rows: number }): Promise<void>;\n\n checkBrowsers(params: {}): Promise<{ hasBrowsers: boolean }>;\n\n installBrowsers(params: {}): Promise<void>;\n\n runGlobalSetup(params: {}): Promise<{\n report: ReportEntry[],\n status: reporterTypes.FullResult['status']\n }>;\n\n runGlobalTeardown(params: {}): Promise<{\n report: ReportEntry[],\n status: reporterTypes.FullResult['status']\n }>;\n\n startDevServer(params: {}): Promise<{\n report: ReportEntry[];\n status: reporterTypes.FullResult['status']\n }>;\n\n stopDevServer(params: {}): Promise<{\n report: ReportEntry[];\n status: reporterTypes.FullResult['status']\n }>;\n\n clearCache(params: {}): Promise<void>;\n\n listFiles(params: {\n projects?: string[];\n }): Promise<{\n report: ReportEntry[];\n status: reporterTypes.FullResult['status']\n }>;\n\n /**\n * Returns list of teleReporter events.\n */\n listTests(params: {\n projects?: string[];\n locations?: string[];\n grep?: string;\n grepInvert?: string;\n }): Promise<{\n report: ReportEntry[],\n status: reporterTypes.FullResult['status']\n }>;\n\n runTests(params: {\n locations?: string[];\n grep?: string;\n grepInvert?: string;\n testIds?: string[];\n headed?: boolean;\n workers?: number | string;\n updateSnapshots?: 'all' | 'changed' | 'missing' | 'none';\n updateSourceMethod?: 'overwrite' | 'patch' | '3way';\n reporters?: string[],\n trace?: 'on' | 'off';\n video?: 'on' | 'off';\n projects?: string[];\n reuseContext?: boolean;\n connectWsEndpoint?: string;\n }): Promise<{\n status: reporterTypes.FullResult['status'];\n }>;\n\n findRelatedTestFiles(params: {\n files: string[];\n }): Promise<{ testFiles: string[]; errors?: reporterTypes.TestError[]; }>;\n\n stopTests(params: {}): Promise<void>;\n\n closeGracefully(params: {}): Promise<void>;\n}\n\nexport interface TestServerInterfaceEvents {\n onReport: Event<any>;\n onStdio: Event<{ type: 'stdout' | 'stderr', text?: string, buffer?: string }>;\n onTestFilesChanged: Event<{ testFiles: string[] }>;\n onLoadTraceRequested: Event<{ traceUrl: string }>;\n}\n\nexport interface TestServerInterfaceEventEmitters {\n dispatchEvent(event: 'report', params: ReportEntry): void;\n dispatchEvent(event: 'stdio', params: { type: 'stdout' | 'stderr', text?: string, buffer?: string }): void;\n dispatchEvent(event: 'testFilesChanged', params: { testFiles: string[] }): void;\n dispatchEvent(event: 'loadTraceRequested', params: { traceUrl: string }): void;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }