playwright-zed-language-server 0.3.0 → 0.5.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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # playwright-zed-language-server
2
2
 
3
- Language server behind the [Playwright for Zed](https://github.com/radekBednarik/playwright-zed)
3
+ Language server behind the [Playwright Runner](https://github.com/radekBednarik/playwright-zed) Zed
4
4
  extension. The Zed extension installs this package from npm at runtime; you do not need to
5
5
  install it yourself.
6
6
 
@@ -20,8 +20,20 @@ This is an independent community project, not affiliated with, endorsed by, or m
20
20
  Microsoft or the Playwright team. "Playwright" is a trademark of Microsoft Corporation. The
21
21
  package contains no Playwright code and does not bundle Playwright.
22
22
 
23
+ Project selection: in a configuration with two or more projects the server offers one code
24
+ action per project (`Playwright: [x] chromium`, `Playwright: [ ] firefox`, ...) backed by the
25
+ command `playwright.toggleProject` (`[{ uri, project }]`), plus `Playwright: Select all
26
+ projects` (`playwright.selectAllProjects`, `[{ uri }]`). Runs pass `--project <name>` per
27
+ selected project unless every project is selected. The choice is stored per configuration
28
+ file in `project-selection.json` under the user's state directory (`$XDG_STATE_HOME` or
29
+ `~/.local/state`, `~/Library/Application Support`, `%LOCALAPPDATA%`, subdirectory
30
+ `playwright-zed-language-server`; override with `PLAYWRIGHT_ZED_STATE_DIR`). Clients that
31
+ support `workspace/configuration` may answer with `{ "projects": ["chromium", "firefox"] }`
32
+ as a default for configurations without a stored choice; `workspace/didChangeConfiguration`
33
+ with the same shape applies live.
34
+
23
35
  **Work in progress.** This is the first slice of the extension (detection, run at cursor,
24
- run file, re-run last). Expect breaking changes between minor versions; the extension pins the
36
+ run file, re-run last, project selection). Expect breaking changes between minor versions; the extension pins the
25
37
  exact server version it was built against.
26
38
 
27
39
  **Built with AI assistance.** The server, like the rest of the extension, is developed with
package/dist/commands.js CHANGED
@@ -33,16 +33,26 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ALL_COMMANDS = exports.COMMAND_ENABLE_DISCOVERY = exports.COMMAND_RERUN_LAST = exports.COMMAND_RUN_FILE = exports.COMMAND_RUN_AT_CURSOR = void 0;
36
+ exports.ALL_COMMANDS = exports.COMMAND_SELECT_ALL_PROJECTS = exports.COMMAND_TOGGLE_PROJECT = exports.COMMAND_ENABLE_DISCOVERY = exports.COMMAND_RERUN_LAST = exports.COMMAND_RUN_FILE = exports.COMMAND_RUN_AT_CURSOR = void 0;
37
37
  exports.resolveTestLocation = resolveTestLocation;
38
38
  exports.buildRunArgs = buildRunArgs;
39
39
  exports.countSelectedTests = countSelectedTests;
40
40
  const path = __importStar(require("node:path"));
41
+ const selection_1 = require("./selection");
41
42
  exports.COMMAND_RUN_AT_CURSOR = 'playwright.runAtCursor';
42
43
  exports.COMMAND_RUN_FILE = 'playwright.runFile';
43
44
  exports.COMMAND_RERUN_LAST = 'playwright.rerunLast';
44
45
  exports.COMMAND_ENABLE_DISCOVERY = 'playwright.enableDiscovery';
45
- exports.ALL_COMMANDS = [exports.COMMAND_RUN_AT_CURSOR, exports.COMMAND_RUN_FILE, exports.COMMAND_RERUN_LAST, exports.COMMAND_ENABLE_DISCOVERY];
46
+ exports.COMMAND_TOGGLE_PROJECT = 'playwright.toggleProject';
47
+ exports.COMMAND_SELECT_ALL_PROJECTS = 'playwright.selectAllProjects';
48
+ exports.ALL_COMMANDS = [
49
+ exports.COMMAND_RUN_AT_CURSOR,
50
+ exports.COMMAND_RUN_FILE,
51
+ exports.COMMAND_RERUN_LAST,
52
+ exports.COMMAND_ENABLE_DISCOVERY,
53
+ exports.COMMAND_TOGGLE_PROJECT,
54
+ exports.COMMAND_SELECT_ALL_PROJECTS,
55
+ ];
46
56
  /**
47
57
  * Resolves what the cursor points at (data-model "TestLocation").
48
58
  *
@@ -81,16 +91,24 @@ function resolveTestLocation(tests, file, cursorLine) {
81
91
  return { kind: 'describe', file, line: cursorLine };
82
92
  return { kind: 'file', file, line: null };
83
93
  }
84
- /** CLI arguments for a run, per contracts/playwright-cli.md. */
85
- function buildRunArgs(location, config) {
94
+ /**
95
+ * CLI arguments for a run, per contracts/playwright-cli.md and feature 005's
96
+ * contracts/project-selection.md: `--project <name>` per selected project unless every
97
+ * project of the config is selected.
98
+ */
99
+ function buildRunArgs(location, config, projects = []) {
86
100
  let target = path.relative(config.configDir, location.file);
87
101
  if (location.kind !== 'file' && location.line !== null)
88
102
  target = `${target}:${location.line}`;
89
- return ['test', target, '-c', config.configPath, '--reporter=list,json'];
103
+ return ['test', target, '-c', config.configPath, '--reporter=list,json', ...(0, selection_1.projectArgs)(projects, config.projects ?? [])];
90
104
  }
91
- /** Number of discovered tests a location selects, used for progress messages. */
92
- function countSelectedTests(tests, location) {
93
- const inFile = tests.filter((t) => t.file === location.file);
105
+ /**
106
+ * Number of discovered specs a location selects, used for progress messages. With a selection,
107
+ * only specs that run in at least one selected project count; the count never multiplies by
108
+ * the number of projects.
109
+ */
110
+ function countSelectedTests(tests, location, selection) {
111
+ const inFile = tests.filter((t) => t.file === location.file && (!selection || (0, selection_1.isTestSelected)(t, selection)));
94
112
  if (location.kind === 'file')
95
113
  return inFile.length;
96
114
  if (location.kind === 'test')
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,kDAyBC;AAGD,oCAIC;AAGD,gDAKC;AA5DD,gDAAkC;AAGrB,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AACjD,QAAA,gBAAgB,GAAG,oBAAoB,CAAC;AACxC,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,4BAA4B,CAAC;AACxD,QAAA,YAAY,GAAG,CAAC,6BAAqB,EAAE,wBAAgB,EAAE,0BAAkB,EAAE,gCAAwB,CAAC,CAAC;AAEpH;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CAAC,KAAuB,EAAE,IAAY,EAAE,UAAkB;IAC3F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAEtE,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,UAAU;YAAE,iBAAiB,GAAG,IAAI,CAAC;;YAC5C,MAAM;IACb,CAAC;IAED,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,uFAAuF;QACvF,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,iBAAiB,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC7C,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,eAAe;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC/E,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,gEAAgE;AAChE,SAAgB,YAAY,CAAC,QAAsB,EAAE,MAAwB;IAC3E,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;QAAE,MAAM,GAAG,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;AAC3E,CAAC;AAED,iFAAiF;AACjF,SAAgB,kBAAkB,CAAC,KAAuB,EAAE,QAAsB;IAChF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC,CAAC,MAAM,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,kDAyBC;AAOD,oCAIC;AAOD,gDAKC;AA9ED,gDAAkC;AAClC,2CAA0D;AAG7C,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AACjD,QAAA,gBAAgB,GAAG,oBAAoB,CAAC;AACxC,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,4BAA4B,CAAC;AACxD,QAAA,sBAAsB,GAAG,0BAA0B,CAAC;AACpD,QAAA,2BAA2B,GAAG,8BAA8B,CAAC;AAC7D,QAAA,YAAY,GAAG;IAC1B,6BAAqB;IACrB,wBAAgB;IAChB,0BAAkB;IAClB,gCAAwB;IACxB,8BAAsB;IACtB,mCAA2B;CAC5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CAAC,KAAuB,EAAE,IAAY,EAAE,UAAkB;IAC3F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAEtE,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,UAAU;YAAE,iBAAiB,GAAG,IAAI,CAAC;;YAC5C,MAAM;IACb,CAAC;IAED,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,uFAAuF;QACvF,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,iBAAiB,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC7C,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,eAAe;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC/E,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,QAAsB,EAAE,MAAwB,EAAE,WAAqB,EAAE;IACpG,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;QAAE,MAAM,GAAG,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,sBAAsB,EAAE,GAAG,IAAA,uBAAW,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5H,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAuB,EAAE,QAAsB,EAAE,SAA4B;IAC9G,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAA,0BAAc,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7G,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC,CAAC,MAAM,CAAC;AACxF,CAAC"}
package/dist/discovery.js CHANGED
@@ -37,26 +37,38 @@ exports.parseListReport = parseListReport;
37
37
  exports.runList = runList;
38
38
  const path = __importStar(require("node:path"));
39
39
  const spawn_1 = require("./spawn");
40
- /** Flattens Playwright's `--list --reporter=json` output into discovered tests. */
40
+ /**
41
+ * Flattens Playwright's `--list --reporter=json` output into discovered tests. The reporter
42
+ * emits one spec entry per project for the same test (feature 005), so entries that share
43
+ * file, position and title path are merged into one DiscoveredTest with the union of their
44
+ * project names.
45
+ */
41
46
  function parseListReport(json) {
42
47
  const report = (json ?? {});
43
48
  const rootDir = report.config?.rootDir ?? '';
44
49
  const testDirs = Array.from(new Set((report.config?.projects ?? []).map((p) => p.testDir).filter((d) => !!d)));
50
+ const projects = (report.config?.projects ?? []).map((p) => p.name ?? '');
45
51
  const tests = [];
52
+ const byKey = new Map();
46
53
  const walk = (suite, describeTitles, describeLines) => {
47
54
  const isDescribe = suite.line > 0;
48
55
  const titles = isDescribe ? [...describeTitles, suite.title] : describeTitles;
49
56
  const lines = isDescribe ? [...describeLines, suite.line] : describeLines;
50
57
  for (const spec of suite.specs ?? []) {
51
- tests.push({
52
- file: path.resolve(rootDir, spec.file),
53
- line: spec.line,
54
- column: spec.column,
55
- title: spec.title,
56
- titlePath: [...titles, spec.title],
57
- describeLines: lines,
58
- projects: (spec.tests ?? []).map((t) => t.projectName ?? '').filter((n) => n !== ''),
59
- });
58
+ const file = path.resolve(rootDir, spec.file);
59
+ const titlePath = [...titles, spec.title];
60
+ const specProjects = (spec.tests ?? []).map((t) => t.projectName ?? '').filter((n) => n !== '');
61
+ const key = [file, spec.line, spec.column, ...titlePath].join('\u0000');
62
+ const existing = byKey.get(key);
63
+ if (existing) {
64
+ for (const name of specProjects)
65
+ if (!existing.projects.includes(name))
66
+ existing.projects.push(name);
67
+ continue;
68
+ }
69
+ const test = { file, line: spec.line, column: spec.column, title: spec.title, titlePath, describeLines: lines, projects: specProjects };
70
+ byKey.set(key, test);
71
+ tests.push(test);
60
72
  }
61
73
  for (const child of suite.suites ?? [])
62
74
  walk(child, titles, lines);
@@ -64,7 +76,7 @@ function parseListReport(json) {
64
76
  for (const suite of report.suites ?? [])
65
77
  walk(suite, [], []);
66
78
  tests.sort((a, b) => (a.file === b.file ? a.line - b.line || a.column - b.column : a.file.localeCompare(b.file)));
67
- return { rootDir, testDirs, tests };
79
+ return { rootDir, testDirs, projects, tests };
68
80
  }
69
81
  let listCounter = 0;
70
82
  /** Runs discovery for one config and stores the result on it. Returns the CLI error text, if any. */
@@ -89,6 +101,7 @@ async function runList(config, spawnFn = spawn_1.runPlaywright) {
89
101
  const parsed = parseListReport(outcome.report);
90
102
  config.rootDir = parsed.rootDir;
91
103
  config.testDirs = parsed.testDirs;
104
+ config.projects = parsed.projects;
92
105
  config.tests = parsed.tests;
93
106
  config.discoveryState = 'idle';
94
107
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
package/dist/reporting.js CHANGED
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Reporter = exports.DISCOVERY_NOT_NOW = exports.DISCOVERY_RUN = exports.DIAGNOSTIC_SOURCE = void 0;
4
+ exports.failureLabel = failureLabel;
4
5
  const node_1 = require("vscode-languageserver/node");
5
6
  const node_url_1 = require("node:url");
6
7
  exports.DIAGNOSTIC_SOURCE = 'playwright';
8
+ /** `[project] title` when the failure belongs to one of several projects, else the title. */
9
+ function failureLabel(failure) {
10
+ return failure.project ? `[${failure.project}] ${failure.title}` : failure.title;
11
+ }
7
12
  exports.DISCOVERY_RUN = 'Run discovery';
8
13
  exports.DISCOVERY_NOT_NOW = 'Not now';
9
14
  /** Thin wrappers over the LSP channels Zed renders (progress, messages, diagnostics, log). */
@@ -16,7 +21,7 @@ class Reporter {
16
21
  * Starts a `$/progress` sequence whose token is the run request id, as the contract states.
17
22
  * Returns false when the client refuses to create the token; progress is then skipped.
18
23
  */
19
- async progressBegin(token, testCount, file) {
24
+ async progressBegin(token, testCount, file, projects = []) {
20
25
  try {
21
26
  await this.connection.sendRequest(node_1.WorkDoneProgressCreateRequest.type, { token });
22
27
  }
@@ -26,7 +31,7 @@ class Reporter {
26
31
  void this.connection.sendProgress(node_1.WorkDoneProgress.type, token, {
27
32
  kind: 'begin',
28
33
  title: 'Playwright',
29
- message: `Running ${testCount} test(s) in ${file}`,
34
+ message: `Running ${testCount} test(s) in ${file}${projects.length > 0 ? ` (${projects.join(', ')})` : ''}`,
30
35
  });
31
36
  return true;
32
37
  }
@@ -43,7 +48,7 @@ class Reporter {
43
48
  * not await this on the discovery path.
44
49
  */
45
50
  askDiscovery(folderName, folderPath) {
46
- const message = `Playwright for Zed found a Playwright configuration in ${folderName} (${folderPath}). ` +
51
+ const message = `Playwright Runner found a Playwright configuration in ${folderName} (${folderPath}). ` +
47
52
  'Run test discovery? Discovery executes this workspace\'s Playwright configuration and test files with your user account. ' +
48
53
  'You can enable it later with "Playwright: Enable test discovery" from the code actions menu.';
49
54
  return this.connection.window
@@ -73,7 +78,7 @@ class Reporter {
73
78
  range: { start: { line, character }, end: { line, character: character + 1 } },
74
79
  severity: node_1.DiagnosticSeverity.Error,
75
80
  source: exports.DIAGNOSTIC_SOURCE,
76
- message: `${failure.title}: ${failure.message}`,
81
+ message: `${failureLabel(failure)}: ${failure.message}`,
77
82
  };
78
83
  const list = byFile.get(failure.file) ?? [];
79
84
  list.push(diagnostic);
@@ -1 +1 @@
1
- {"version":3,"file":"reporting.js","sourceRoot":"","sources":["../src/reporting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporting.js","sourceRoot":"","sources":["../src/reporting.ts"],"names":[],"mappings":"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"}
package/dist/runner.js CHANGED
@@ -46,10 +46,16 @@ const ANSI = /\u001b\[[0-9;]*[A-Za-z]/g;
46
46
  function stripAnsi(text) {
47
47
  return text.replace(ANSI, '');
48
48
  }
49
- /** Extracts counts and failures from a `--reporter=json` run report. */
49
+ /**
50
+ * Extracts counts and failures from a `--reporter=json` run report. A spec carries one
51
+ * `tests[]` entry per project it ran in (and the reporter may repeat the spec per project),
52
+ * so failures are collected per failing project entry; the project name is kept when the
53
+ * config defines two or more projects, so the editor can tell the failures apart.
54
+ */
50
55
  function parseRunReport(json) {
51
56
  const report = (json ?? {});
52
57
  const rootDir = report.config?.rootDir ?? '';
58
+ const multiProject = (report.config?.projects?.length ?? 0) > 1;
53
59
  const counts = {
54
60
  expected: report.stats?.expected ?? 0,
55
61
  unexpected: report.stats?.unexpected ?? 0,
@@ -61,20 +67,25 @@ function parseRunReport(json) {
61
67
  for (const spec of suite.specs ?? []) {
62
68
  if (spec.ok !== false)
63
69
  continue;
64
- const result = (spec.tests ?? [])
65
- .flatMap((t) => t.results ?? [])
66
- .find((r) => r.error) ?? (spec.tests ?? []).flatMap((t) => t.results ?? []).at(-1);
67
- const rawMessage = result?.error?.message ?? 'Test failed without an error message';
68
- const fullMessage = stripAnsi(rawMessage).trim();
69
- const loc = result?.error?.location;
70
- failures.push({
71
- file: loc?.file ?? path.resolve(rootDir, spec.file),
72
- line: loc?.line ?? spec.line,
73
- column: loc?.column ?? spec.column,
74
- title: spec.title,
75
- message: fullMessage.split('\n')[0] ?? fullMessage,
76
- fullMessage,
77
- });
70
+ const entries = spec.tests ?? [];
71
+ // Only the project entries that actually failed; a spec is `ok: false` as soon as one did.
72
+ const failing = entries.filter((t) => (t.results ?? []).some((r) => r.error) || t.status === 'unexpected');
73
+ for (const entry of failing.length > 0 ? failing : entries.slice(-1)) {
74
+ const results = entry.results ?? [];
75
+ const result = results.find((r) => r.error) ?? results.at(-1);
76
+ const rawMessage = result?.error?.message ?? 'Test failed without an error message';
77
+ const fullMessage = stripAnsi(rawMessage).trim();
78
+ const loc = result?.error?.location;
79
+ failures.push({
80
+ file: loc?.file ?? path.resolve(rootDir, spec.file),
81
+ line: loc?.line ?? spec.line,
82
+ column: loc?.column ?? spec.column,
83
+ title: spec.title,
84
+ project: multiProject && entry.projectName ? entry.projectName : null,
85
+ message: fullMessage.split('\n')[0] ?? fullMessage,
86
+ fullMessage,
87
+ });
88
+ }
78
89
  }
79
90
  for (const child of suite.suites ?? [])
80
91
  walk(child);
@@ -127,7 +138,7 @@ class RunManager {
127
138
  const config = request.config;
128
139
  const handle = this.spawnFn({
129
140
  cli: config.playwrightCli,
130
- args: (0, commands_1.buildRunArgs)(request.location, config),
141
+ args: (0, commands_1.buildRunArgs)(request.location, config, request.projects),
131
142
  cwd: config.configDir,
132
143
  env: { FORCE_COLOR: '0' },
133
144
  reportFile: (0, spawn_1.reportFilePath)('run', request.id),
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,8BAEC;AA+BD,wCAkCC;AAGD,kCAIC;AAGD,8BAGC;AAED,kCAEC;AA3FD,gDAAkC;AAElC,mCAAsE;AACtE,yCAA0C;AAE1C,MAAM,IAAI,GAAG,0BAA0B,CAAC;AAExC,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AA8BD,wEAAwE;AACxE,SAAgB,cAAc,CAAC,IAAa;IAC1C,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAkB,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAc;QACxB,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;QACnC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC;KAChC,CAAC;IACF,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK;gBAAE,SAAS;YAChC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;iBAC9B,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;iBAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,UAAU,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,IAAI,sCAAsC,CAAC;YACpF,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;gBACnD,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;gBAC5B,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM;gBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW;gBAClD,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE;QAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC;AAED,sEAAsE;AACtE,SAAgB,WAAW,CAAC,IAAmB,EAAE,SAAkB;IACjE,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,IAAI,KAAK,CAAC,IAAI,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4FAA4F;AAC5F,SAAgB,SAAS,CAAC,MAAiB,EAAE,aAA4B,IAAI;IAC3E,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,YAAY,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,OAAO,UAAU,CAAC;IACjG,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC;AAOD,2FAA2F;AAC3F,MAAa,UAAU;IAIQ;IAHrB,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAG,CAAC,CAAC;IAEpB,YAA6B,UAAmB,qBAAa;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAAG,CAAC;IAEjE,MAAM;QACJ,OAAO,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,+DAA+D;IAC/D,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAmB;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,MAAM,GAAqB,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,GAAG,EAAE,MAAM,CAAC,aAAa;YACzB,IAAI,EAAE,IAAA,uBAAY,EAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC5C,GAAG,EAAE,MAAM,CAAC,SAAS;YACrB,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;YACzB,UAAU,EAAE,IAAA,sBAAc,EAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,KAAK,GAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAE9C,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpF,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAe,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,IAAqB,EAAE,CAAC;QAEnJ,IAAI,OAAO,CAAC,SAAS;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAE9F,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QAClE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7F,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAC9G,CAAC;CACF;AAnDD,gCAmDC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveSelection = resolveSelection;
4
+ exports.toggleProject = toggleProject;
5
+ exports.selectAll = selectAll;
6
+ exports.isTestSelected = isTestSelected;
7
+ exports.allSelected = allSelected;
8
+ exports.projectArgs = projectArgs;
9
+ exports.parseProjectsSetting = parseProjectsSetting;
10
+ function inReportedOrder(reported, names) {
11
+ const wanted = new Set(names);
12
+ return reported.filter((name) => wanted.has(name));
13
+ }
14
+ function missing(names, reported) {
15
+ const known = new Set(reported);
16
+ return names.filter((name) => !known.has(name));
17
+ }
18
+ /**
19
+ * Reconciles a config's selection after discovery (data-model.md "Reconciliation"):
20
+ * single project, else remembered, else settings default, else the first project.
21
+ */
22
+ function resolveSelection(reported, remembered, settingsDefault, rememberedUpdatedAt = null) {
23
+ const notice = { dropped: [], unknown: [] };
24
+ if (reported.length < 2) {
25
+ return { selection: { projects: [...reported], source: 'single', updatedAt: null }, notice };
26
+ }
27
+ if (remembered !== null) {
28
+ const keep = inReportedOrder(reported, remembered);
29
+ notice.dropped = missing(remembered, reported);
30
+ if (keep.length > 0) {
31
+ return { selection: { projects: keep, source: 'remembered', updatedAt: rememberedUpdatedAt }, notice };
32
+ }
33
+ }
34
+ if (settingsDefault !== null) {
35
+ const keep = inReportedOrder(reported, settingsDefault);
36
+ notice.unknown = missing(settingsDefault, reported);
37
+ if (keep.length > 0) {
38
+ return { selection: { projects: keep, source: 'settings', updatedAt: null }, notice };
39
+ }
40
+ }
41
+ return { selection: { projects: [reported[0]], source: 'default', updatedAt: null }, notice };
42
+ }
43
+ /** Flips one project; refuses unknown names and the last selected project. */
44
+ function toggleProject(selection, reported, name) {
45
+ if (!reported.includes(name))
46
+ return { ok: false, refusal: 'unknown' };
47
+ const current = new Set(selection.projects);
48
+ if (current.has(name)) {
49
+ if (current.size <= 1)
50
+ return { ok: false, refusal: 'last' };
51
+ current.delete(name);
52
+ }
53
+ else {
54
+ current.add(name);
55
+ }
56
+ return { ok: true, selection: { projects: inReportedOrder(reported, [...current]), source: 'chosen', updatedAt: new Date().toISOString() } };
57
+ }
58
+ /** Selects every reported project, stored as the explicit full list. */
59
+ function selectAll(reported) {
60
+ return { projects: [...reported], source: 'chosen', updatedAt: new Date().toISOString() };
61
+ }
62
+ /** True when the test runs in at least one selected project; single-project configs select everything. */
63
+ function isTestSelected(test, selection) {
64
+ if (selection.source === 'single' || test.projects.length === 0)
65
+ return true;
66
+ return test.projects.some((name) => selection.projects.includes(name));
67
+ }
68
+ function allSelected(selection, reported) {
69
+ return reported.every((name) => selection.projects.includes(name));
70
+ }
71
+ /** `--project <name>` pairs for a run; nothing when every reported project is selected. */
72
+ function projectArgs(selected, reported) {
73
+ if (reported.length < 2 || selected.length === 0)
74
+ return [];
75
+ if (reported.every((name) => selected.includes(name)))
76
+ return [];
77
+ return selected.flatMap((name) => ['--project', name]);
78
+ }
79
+ /** Validates the `projects` setting value (data-model.md "Settings value"). */
80
+ function parseProjectsSetting(value) {
81
+ if (value === undefined || value === null)
82
+ return { projects: null, invalid: false };
83
+ if (!Array.isArray(value) || value.some((v) => typeof v !== 'string' || v === ''))
84
+ return { projects: null, invalid: true };
85
+ return { projects: Array.from(new Set(value)), invalid: false };
86
+ }
87
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -39,6 +39,8 @@ const node_1 = require("vscode-languageserver/node");
39
39
  const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
40
40
  const commands_1 = require("./commands");
41
41
  const discovery_1 = require("./discovery");
42
+ const selection_1 = require("./selection");
43
+ const store_1 = require("./store");
42
44
  const reporting_1 = require("./reporting");
43
45
  const runner_1 = require("./runner");
44
46
  const trust_1 = require("./trust");
@@ -62,6 +64,12 @@ const pendingFolders = [];
62
64
  let editorTrustGate = false;
63
65
  /** Client name and version for log lines, from `initialize.params.clientInfo`. */
64
66
  let clientLabel = 'the editor';
67
+ /** Feature 005: the `projects` default from the editor settings, null when absent. */
68
+ let settingsDefault = null;
69
+ /** True when the client answers `workspace/configuration` (feature 005 settings default). */
70
+ let clientSupportsConfiguration = false;
71
+ /** Avoids repeating the malformed-setting warning for the same value. */
72
+ let invalidSettingWarned = false;
65
73
  function toPath(uri) {
66
74
  try {
67
75
  return (0, node_url_1.fileURLToPath)(uri);
@@ -98,8 +106,54 @@ async function discoverConfig(config) {
98
106
  }
99
107
  else {
100
108
  reporter.info(`playwright: discovered ${config.tests.length} test(s) via ${config.configPath}`);
109
+ reconcileSelection(config);
101
110
  }
102
111
  }
112
+ /**
113
+ * Feature 005: reconciles the project selection with the reported project list after
114
+ * discovery (data-model.md "Reconciliation"): the remembered choice from the per-user store,
115
+ * else the settings default, else the first project. Notices are shown once per distinct
116
+ * change; the store is never written here.
117
+ */
118
+ function reconcileSelection(config) {
119
+ const stored = readStoredSelection(config.configPath);
120
+ const { selection, notice } = (0, selection_1.resolveSelection)(config.projects, stored?.projects ?? null, settingsDefault, stored?.updatedAt ?? null);
121
+ config.selection = selection;
122
+ logSelection(config);
123
+ const key = `${notice.dropped.join(',')}|${notice.unknown.join(',')}`;
124
+ const changed = key !== config.noticeKey;
125
+ config.noticeKey = key;
126
+ if (!changed)
127
+ return;
128
+ const name = path.basename(config.configPath);
129
+ const names = selection.projects.join(', ');
130
+ if (notice.dropped.length > 0) {
131
+ reporter.showInfo(`Playwright: project(s) ${notice.dropped.join(', ')} no longer exist in ${name}; selection is now ${names}`);
132
+ }
133
+ if (notice.unknown.length > 0) {
134
+ reporter.showWarning(`Playwright: setting "projects" names ${notice.unknown.join(', ')} which ${name} does not define; available: ${config.projects.join(', ')}`);
135
+ }
136
+ }
137
+ function readStoredSelection(configPath) {
138
+ try {
139
+ return (0, store_1.readSelections)((0, store_1.stateDir)())[configPath] ?? null;
140
+ }
141
+ catch (error) {
142
+ reporter.log(`playwright: could not read ${(0, store_1.stateDir)()}: ${error.message}`);
143
+ return null;
144
+ }
145
+ }
146
+ function persistSelection(config) {
147
+ try {
148
+ (0, store_1.writeSelection)((0, store_1.stateDir)(), config.configPath, config.selection.projects);
149
+ }
150
+ catch (error) {
151
+ reporter.log(`playwright: could not remember the project selection in ${(0, store_1.stateDir)()}: ${error.message}`);
152
+ }
153
+ }
154
+ function logSelection(config) {
155
+ reporter.info(`playwright: projects for ${config.configPath}: ${config.selection.projects.join(', ')} (${config.selection.source})`);
156
+ }
103
157
  async function discoverWorkspace(ws) {
104
158
  ws.configs = [];
105
159
  for (const configPath of (0, workspace_1.findConfigs)(ws.rootPath)) {
@@ -242,6 +296,7 @@ function removeWorkspace(folder) {
242
296
  }
243
297
  connection.onInitialize((params) => {
244
298
  editorTrustGate = (0, trust_1.editorHasTrustGate)(params.clientInfo);
299
+ clientSupportsConfiguration = params.capabilities.workspace?.configuration === true;
245
300
  if (params.clientInfo)
246
301
  clientLabel = `${params.clientInfo.name} ${params.clientInfo.version ?? ''}`.trim();
247
302
  if (params.workspaceFolders) {
@@ -262,9 +317,13 @@ connection.onInitialize((params) => {
262
317
  });
263
318
  connection.onInitialized(() => {
264
319
  void (async () => {
320
+ await loadSettings();
265
321
  for (const { folder, fromWorkspaceFolders } of pendingFolders.splice(0))
266
322
  await addWorkspace(folder, fromWorkspaceFolders);
267
323
  })();
324
+ connection.onDidChangeConfiguration((change) => {
325
+ void applySettings(change.settings);
326
+ });
268
327
  try {
269
328
  connection.workspace.onDidChangeWorkspaceFolders((event) => {
270
329
  for (const folder of event.removed)
@@ -280,6 +339,60 @@ connection.onInitialized(() => {
280
339
  }
281
340
  });
282
341
  // ---------------------------------------------------------------------------
342
+ // Editor settings (feature 005): the `projects` default
343
+ // ---------------------------------------------------------------------------
344
+ /** Asks the client for the whole settings object once; clients without support have no default. */
345
+ async function loadSettings() {
346
+ if (!clientSupportsConfiguration)
347
+ return;
348
+ try {
349
+ const value = (await connection.workspace.getConfiguration());
350
+ await applySettings(value);
351
+ }
352
+ catch (error) {
353
+ reporter.log(`playwright: could not read the editor settings: ${error.message}`);
354
+ }
355
+ }
356
+ /**
357
+ * Applies `{ projects: [...] }` from `workspace/configuration` or `didChangeConfiguration`.
358
+ * Configs whose selection came from the default or from settings are re-resolved; remembered
359
+ * and chosen selections keep.
360
+ */
361
+ async function applySettings(value) {
362
+ const raw = value && typeof value === 'object' ? value.projects : undefined;
363
+ const parsed = (0, selection_1.parseProjectsSetting)(raw);
364
+ if (parsed.invalid) {
365
+ if (!invalidSettingWarned)
366
+ reporter.showWarning('Playwright: setting "projects" must be a list of project names');
367
+ invalidSettingWarned = true;
368
+ }
369
+ else {
370
+ invalidSettingWarned = false;
371
+ }
372
+ const before = JSON.stringify(settingsDefault);
373
+ settingsDefault = parsed.projects;
374
+ if (before === JSON.stringify(settingsDefault))
375
+ return;
376
+ reporter.info(`playwright: settings default projects: ${settingsDefault ? settingsDefault.join(', ') : 'none'}`);
377
+ let changed = false;
378
+ for (const ws of workspaces.values()) {
379
+ if (ws.discovery !== 'enabled')
380
+ continue;
381
+ for (const config of ws.configs) {
382
+ if (!config.supported || config.projects.length === 0)
383
+ continue;
384
+ if (config.selection.source !== 'default' && config.selection.source !== 'settings')
385
+ continue;
386
+ const previous = JSON.stringify(config.selection.projects);
387
+ reconcileSelection(config);
388
+ if (previous !== JSON.stringify(config.selection.projects))
389
+ changed = true;
390
+ }
391
+ }
392
+ if (changed)
393
+ await reporter.refreshCodeLenses();
394
+ }
395
+ // ---------------------------------------------------------------------------
283
396
  // Document tracking: dirty flag and diagnostics clearing on edit
284
397
  // ---------------------------------------------------------------------------
285
398
  documents.onDidOpen((event) => {
@@ -358,6 +471,24 @@ function testFileContext(uri) {
358
471
  return { ws, ctx: null };
359
472
  return { ws, ctx: { ws, config, file } };
360
473
  }
474
+ /** Tests of `config` in `file` that run in at least one selected project (feature 005). */
475
+ function selectedTests(config, file) {
476
+ return config.tests.filter((t) => t.file === file && (0, selection_1.isTestSelected)(t, config.selection));
477
+ }
478
+ /**
479
+ * The config that owns any served document under its directory, when the workspace's discovery
480
+ * is enabled. Used for the project picker, which need not be opened from a test file.
481
+ */
482
+ function configForDocument(uri) {
483
+ const file = toPath(uri);
484
+ if (!file)
485
+ return null;
486
+ const ws = workspaceForFile(file);
487
+ if (!ws || ws.discovery !== 'enabled')
488
+ return null;
489
+ const config = (0, workspace_1.configForFile)(ws, file);
490
+ return config ? { ws, config } : null;
491
+ }
361
492
  function action(title, command, args) {
362
493
  return { title, kind: CODE_ACTION_KIND, command: { title, command, arguments: args } };
363
494
  }
@@ -370,7 +501,7 @@ connection.onCodeAction((params) => {
370
501
  const actions = [];
371
502
  if (ctx) {
372
503
  const line0 = params.range.start.line;
373
- const location = (0, commands_1.resolveTestLocation)(ctx.config.tests, ctx.file, line0 + 1);
504
+ const location = (0, commands_1.resolveTestLocation)(selectedTests(ctx.config, ctx.file), ctx.file, line0 + 1);
374
505
  if (location.kind === 'test')
375
506
  actions.push(action('Playwright: Run test at cursor', commands_1.COMMAND_RUN_AT_CURSOR, [{ uri, line: line0 }]));
376
507
  else if (location.kind === 'describe')
@@ -379,6 +510,17 @@ connection.onCodeAction((params) => {
379
510
  }
380
511
  if (ws?.lastRun)
381
512
  actions.push(action('Playwright: Re-run last', commands_1.COMMAND_RERUN_LAST, [{ uri }]));
513
+ // Feature 005: the project picker, one entry per project, from any served file of the config.
514
+ const owner = configForDocument(uri);
515
+ if (owner && owner.config.projects.length >= 2) {
516
+ for (const name of owner.config.projects) {
517
+ const on = owner.config.selection.projects.includes(name);
518
+ actions.push(action(`Playwright: [${on ? 'x' : ' '}] ${name}`, commands_1.COMMAND_TOGGLE_PROJECT, [{ uri, project: name }]));
519
+ }
520
+ if (!(0, selection_1.allSelected)(owner.config.selection, owner.config.projects)) {
521
+ actions.push(action('Playwright: Select all projects', commands_1.COMMAND_SELECT_ALL_PROJECTS, [{ uri }]));
522
+ }
523
+ }
382
524
  return actions;
383
525
  });
384
526
  connection.onCodeLens((params) => {
@@ -389,9 +531,7 @@ connection.onCodeLens((params) => {
389
531
  const lenses = [];
390
532
  const testLines = new Set();
391
533
  const describeLines = new Set();
392
- for (const test of ctx.config.tests) {
393
- if (test.file !== ctx.file)
394
- continue;
534
+ for (const test of selectedTests(ctx.config, ctx.file)) {
395
535
  testLines.add(test.line);
396
536
  for (const d of test.describeLines)
397
537
  describeLines.add(d);
@@ -411,21 +551,27 @@ connection.onCodeLens((params) => {
411
551
  // Commands
412
552
  // ---------------------------------------------------------------------------
413
553
  async function startRun(ws, location, config, trigger) {
554
+ const displayFile = path.relative(config.configDir, location.file);
555
+ const target = location.line === null ? displayFile : `${displayFile}:${location.line}`;
556
+ const multiProject = config.projects.length >= 2;
557
+ // Count of discovered specs in the target that run in a selected project (feature 005).
558
+ const count = (0, commands_1.countSelectedTests)(config.tests, location, config.selection);
559
+ if (count === 0 && multiProject) {
560
+ reporter.showWarning(`Playwright: no tests in ${target} run in the selected project(s) ${config.selection.projects.join(', ')}; change the selection from the code actions menu.`);
561
+ return;
562
+ }
414
563
  const manager = managerFor(ws);
415
564
  const uri = (0, node_url_1.pathToFileURL)(location.file).toString();
416
565
  const dirty = dirtyUris.has(uri);
417
- const request = { id: manager.nextId(), location, config, trigger, startedAt: new Date().toISOString(), dirty };
566
+ const request = { id: manager.nextId(), location, config, trigger, startedAt: new Date().toISOString(), dirty, projects: [...config.selection.projects] };
418
567
  ws.lastRun = request;
419
- const displayFile = path.relative(config.configDir, location.file);
420
568
  if (dirty)
421
569
  reporter.showWarning(`${displayFile} has unsaved changes; running the saved version`);
422
570
  const previouslyPublished = publishedFiles.get(ws.rootPath) ?? new Set();
423
571
  reporter.clearDiagnostics(new Set([location.file, ...previouslyPublished]));
424
572
  publishedFiles.delete(ws.rootPath);
425
- const count = (0, commands_1.countSelectedTests)(config.tests, location);
426
- const progress = await reporter.progressBegin(request.id, count, displayFile);
427
- const target = location.line === null ? displayFile : `${displayFile}:${location.line}`;
428
- reporter.log(`playwright: run ${request.id} (${trigger}, ${location.kind}) ${target}`);
573
+ const progress = await reporter.progressBegin(request.id, count, displayFile, multiProject ? request.projects : []);
574
+ reporter.log(`playwright: run ${request.id} (${trigger}, ${location.kind}) ${target} projects: ${request.projects.join(', ')}`);
429
575
  const result = await manager.start(request);
430
576
  reporter.log(`playwright: run ${request.id} command: ${result.command}\nplaywright: run ${request.id} cwd: ${config.configDir}\n${result.rawOutput.trimEnd()}`);
431
577
  switch (result.status) {
@@ -444,7 +590,7 @@ async function startRun(ws, location, config, trigger) {
444
590
  case 'failed': {
445
591
  reporter.progressEnd(request.id, progress, (0, runner_1.summarize)(result.counts, result.durationMs));
446
592
  const first = result.failures[0];
447
- reporter.showError(`Playwright: ${(0, runner_1.summarize)(result.counts, result.durationMs)}${first ? `\n${first.title}: ${first.fullMessage}` : ''}`);
593
+ reporter.showError(`Playwright: ${(0, runner_1.summarize)(result.counts, result.durationMs)}${first ? `\n${(0, reporting_1.failureLabel)(first)}: ${first.fullMessage}` : ''}`);
448
594
  const files = reporter.publishFailures(result.failures);
449
595
  if (files.length > 0)
450
596
  publishedFiles.set(ws.rootPath, new Set(files));
@@ -480,7 +626,7 @@ async function runAtCursor(uri, line0) {
480
626
  const { ctx } = testFileContext(uri);
481
627
  if (!ctx)
482
628
  return notPlaywright(uri);
483
- const location = (0, commands_1.resolveTestLocation)(ctx.config.tests, ctx.file, line0 + 1);
629
+ const location = (0, commands_1.resolveTestLocation)(selectedTests(ctx.config, ctx.file), ctx.file, line0 + 1);
484
630
  await startRun(ctx.ws, location, ctx.config, 'cursor');
485
631
  }
486
632
  async function runFile(uri) {
@@ -514,6 +660,45 @@ async function rerunLast(uri) {
514
660
  const { location, config } = ws.lastRun;
515
661
  await startRun(ws, location, config, 'rerun');
516
662
  }
663
+ /**
664
+ * Feature 005: applies a new selection, logs it, remembers it, refreshes lenses and confirms
665
+ * the new state in a notification. The notification matters in Zed: its code action menu is
666
+ * cached per cursor position and refetched only when the cursor moves or the buffer changes
667
+ * (`crates/editor/src/code_actions.rs`), so reopening the menu at the same spot still shows
668
+ * the check marks from before the toggle.
669
+ */
670
+ async function applySelectionChange(config, selection) {
671
+ config.selection = selection;
672
+ logSelection(config);
673
+ persistSelection(config);
674
+ reporter.showInfo(`Playwright: projects for ${path.basename(config.configPath)}: ${selection.projects.join(', ')}`);
675
+ await reporter.refreshCodeLenses();
676
+ }
677
+ async function toggleProjectCommand(uri, project) {
678
+ const gated = gatedWorkspace(uri);
679
+ if (gated)
680
+ return refuseNotEnabled(gated);
681
+ const owner = configForDocument(uri);
682
+ if (!owner)
683
+ return notPlaywright(uri);
684
+ const result = (0, selection_1.toggleProject)(owner.config.selection, owner.config.projects, project);
685
+ if (!result.ok) {
686
+ reporter.showWarning(result.refusal === 'last'
687
+ ? 'Playwright: at least one project must stay selected'
688
+ : `Playwright: ${project} is not a project of ${path.basename(owner.config.configPath)}`);
689
+ return;
690
+ }
691
+ await applySelectionChange(owner.config, result.selection);
692
+ }
693
+ async function selectAllProjectsCommand(uri) {
694
+ const gated = gatedWorkspace(uri);
695
+ if (gated)
696
+ return refuseNotEnabled(gated);
697
+ const owner = configForDocument(uri);
698
+ if (!owner)
699
+ return notPlaywright(uri);
700
+ await applySelectionChange(owner.config, (0, selection_1.selectAll)(owner.config.projects));
701
+ }
517
702
  connection.onExecuteCommand(async (params) => {
518
703
  const arg = (params.arguments?.[0] ?? {});
519
704
  try {
@@ -533,6 +718,18 @@ connection.onExecuteCommand(async (params) => {
533
718
  case commands_1.COMMAND_RERUN_LAST:
534
719
  await rerunLast(arg.uri);
535
720
  break;
721
+ case commands_1.COMMAND_TOGGLE_PROJECT:
722
+ if (typeof arg.uri === 'string' && typeof arg.project === 'string')
723
+ await toggleProjectCommand(arg.uri, arg.project);
724
+ else
725
+ reporter.showError('Playwright: toggle project needs a document and a project name');
726
+ break;
727
+ case commands_1.COMMAND_SELECT_ALL_PROJECTS:
728
+ if (typeof arg.uri === 'string')
729
+ await selectAllProjectsCommand(arg.uri);
730
+ else
731
+ reporter.showError('Playwright: select all projects needs a document');
732
+ break;
536
733
  case commands_1.COMMAND_ENABLE_DISCOVERY: {
537
734
  const file = typeof arg.uri === 'string' ? toPath(arg.uri) : null;
538
735
  const ws = file ? workspaceForFile(file) : null;
@@ -567,6 +764,9 @@ connection.onRequest(STATUS_REQUEST, () => Array.from(workspaces.values()).map((
567
764
  testDirs: c.testDirs,
568
765
  discoveryState: c.discoveryState,
569
766
  testCount: c.tests.length,
767
+ projects: c.projects,
768
+ selectedProjects: c.selection.projects,
769
+ selectionSource: c.selection.source,
570
770
  })),
571
771
  })));
572
772
  documents.listen(connection);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/store.js ADDED
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.STATE_DIR_VAR = exports.STORE_FILE = exports.STATE_SUBDIR = void 0;
37
+ exports.stateDir = stateDir;
38
+ exports.readSelections = readSelections;
39
+ exports.writeSelection = writeSelection;
40
+ const fs = __importStar(require("node:fs"));
41
+ const os = __importStar(require("node:os"));
42
+ const path = __importStar(require("node:path"));
43
+ /** Subdirectory of the platform state directory that holds this server's files. */
44
+ exports.STATE_SUBDIR = 'playwright-zed-language-server';
45
+ /** Per-user memory of project selections (feature 005, research R5). */
46
+ exports.STORE_FILE = 'project-selection.json';
47
+ /** Environment override for the state directory (tests, power users). */
48
+ exports.STATE_DIR_VAR = 'PLAYWRIGHT_ZED_STATE_DIR';
49
+ /**
50
+ * Where the server keeps per-user state: the override, else `$XDG_STATE_HOME` or
51
+ * `~/.local/state` on Linux, `~/Library/Application Support` on macOS, `%LOCALAPPDATA%` on
52
+ * Windows, each with the `playwright-zed-language-server` subdirectory.
53
+ */
54
+ function stateDir(env = process.env, platform = process.platform, home = os.homedir()) {
55
+ const override = env[exports.STATE_DIR_VAR]?.trim();
56
+ if (override)
57
+ return override;
58
+ if (platform === 'win32')
59
+ return path.join(env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'), exports.STATE_SUBDIR);
60
+ if (platform === 'darwin')
61
+ return path.join(home, 'Library', 'Application Support', exports.STATE_SUBDIR);
62
+ const xdg = env.XDG_STATE_HOME?.trim();
63
+ return path.join(xdg || path.join(home, '.local', 'state'), exports.STATE_SUBDIR);
64
+ }
65
+ function isStoredSelection(value) {
66
+ if (!value || typeof value !== 'object')
67
+ return false;
68
+ const entry = value;
69
+ return Array.isArray(entry.projects) && entry.projects.every((p) => typeof p === 'string') && typeof entry.updatedAt === 'string';
70
+ }
71
+ /**
72
+ * Reads every stored selection, keyed by absolute config path. A missing, unreadable,
73
+ * malformed or symlinked file yields `{}`; the caller decides whether to log.
74
+ */
75
+ function readSelections(dir) {
76
+ const file = path.join(dir, exports.STORE_FILE);
77
+ let raw;
78
+ try {
79
+ if (!fs.lstatSync(file).isFile())
80
+ return {};
81
+ raw = fs.readFileSync(file, 'utf8');
82
+ }
83
+ catch {
84
+ return {};
85
+ }
86
+ let parsed;
87
+ try {
88
+ parsed = JSON.parse(raw);
89
+ }
90
+ catch {
91
+ return {};
92
+ }
93
+ const store = parsed;
94
+ if (!store || store.version !== 1 || !store.configs || typeof store.configs !== 'object')
95
+ return {};
96
+ const result = {};
97
+ for (const [configPath, entry] of Object.entries(store.configs)) {
98
+ if (isStoredSelection(entry))
99
+ result[configPath] = { projects: [...entry.projects], updatedAt: entry.updatedAt };
100
+ }
101
+ return result;
102
+ }
103
+ /**
104
+ * Stores the selection for one config, keeping every other entry: read, merge, write to a
105
+ * temp file in the same directory, rename. Directory `0700`, file `0600`. Throws on failure.
106
+ */
107
+ function writeSelection(dir, configPath, projects, now = new Date()) {
108
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
109
+ const entry = { projects: [...projects], updatedAt: now.toISOString() };
110
+ const store = { version: 1, configs: { ...readSelections(dir), [configPath]: entry } };
111
+ const file = path.join(dir, exports.STORE_FILE);
112
+ const temp = path.join(dir, `${exports.STORE_FILE}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`);
113
+ try {
114
+ fs.writeFileSync(temp, `${JSON.stringify(store, null, 2)}\n`, { mode: 0o600 });
115
+ fs.renameSync(temp, file);
116
+ }
117
+ catch (error) {
118
+ fs.rmSync(temp, { force: true });
119
+ throw error;
120
+ }
121
+ return entry;
122
+ }
123
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/workspace.js CHANGED
@@ -114,6 +114,9 @@ function buildConfig(configPath) {
114
114
  testDirs: [],
115
115
  tests: [],
116
116
  discoveryState: 'idle',
117
+ projects: [],
118
+ selection: { projects: [], source: 'single', updatedAt: null },
119
+ noticeKey: null,
117
120
  };
118
121
  }
119
122
  function isWithin(parent, child) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "playwright-zed-language-server",
3
- "version": "0.3.0",
4
- "description": "Language server for the Playwright for Zed extension: discovers and runs Playwright tests in your workspace (community project, not affiliated with Microsoft)",
3
+ "version": "0.5.0",
4
+ "description": "Language server for the Playwright Runner Zed extension: discovers and runs Playwright tests in your workspace (community project, not affiliated with Microsoft)",
5
5
  "keywords": [
6
6
  "playwright",
7
7
  "zed",