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 +14 -2
- package/dist/commands.js +26 -8
- package/dist/commands.js.map +1 -1
- package/dist/discovery.js +24 -11
- package/dist/discovery.js.map +1 -1
- package/dist/reporting.js +9 -4
- package/dist/reporting.js.map +1 -1
- package/dist/runner.js +27 -16
- package/dist/runner.js.map +1 -1
- package/dist/selection.js +87 -0
- package/dist/selection.js.map +1 -0
- package/dist/server.js +212 -12
- package/dist/server.js.map +1 -1
- package/dist/store.js +123 -0
- package/dist/store.js.map +1 -0
- package/dist/workspace.js +3 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# playwright-zed-language-server
|
|
2
2
|
|
|
3
|
-
Language server behind the [Playwright
|
|
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.
|
|
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
|
-
/**
|
|
85
|
-
|
|
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
|
-
/**
|
|
92
|
-
|
|
93
|
-
|
|
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')
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
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
|
-
/**
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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;
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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
|
|
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
|
|
81
|
+
message: `${failureLabel(failure)}: ${failure.message}`,
|
|
77
82
|
};
|
|
78
83
|
const list = byFile.get(failure.file) ?? [];
|
|
79
84
|
list.push(diagnostic);
|
package/dist/reporting.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporting.js","sourceRoot":"","sources":["../src/reporting.ts"],"names":[],"mappings":";;;
|
|
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
|
-
/**
|
|
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
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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),
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,8BAEC;
|
|
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.
|
|
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.
|
|
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
|
|
426
|
-
|
|
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
|
|
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.
|
|
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);
|
package/dist/server.js.map
CHANGED
|
@@ -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) {
|
package/dist/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,oCAEC;AAGD,kCAsBC;AASD,8CAoBC;AAGD,
|
|
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.
|
|
4
|
-
"description": "Language server for the Playwright
|
|
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",
|