From ed62f10d2a08ae8ea1881550aed4784f83f0380a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 22:41:21 +0000 Subject: [PATCH 1/5] Initial plan From 5968502233fe161670e3683affbedc2b713ade17 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 22:43:59 +0000 Subject: [PATCH 2/5] Add VS Code extension test harness infrastructure and tests Co-authored-by: TheLarkInn <3408176+TheLarkInn@users.noreply.github.com> --- .../package.json | 9 +- .../src/test/runTest.ts | 28 +++++ .../src/test/suite/extension.test.ts | 102 ++++++++++++++++++ .../src/test/suite/index.ts | 42 ++++++++ 4 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/runTest.ts create mode 100644 vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts create mode 100644 vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json b/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json index 93655a27441..d3ea9b5bfcc 100644 --- a/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json @@ -34,6 +34,8 @@ "build": "heft build --clean", "build:watch": "heft build-watch", "start": "heft start", + "pretest": "npm run build", + "test": "node ./lib/test/runTest.js", "_phase:build": "heft run --only build -- --clean", "_phase:test": "" }, @@ -106,8 +108,13 @@ "@rushstack/heft-vscode-extension-rig": "workspace:*", "@rushstack/heft-node-rig": "workspace:*", "@rushstack/heft": "workspace:*", + "@types/glob": "7.1.1", + "@types/mocha": "10.0.6", "@types/node": "20.17.19", "@types/vscode": "1.103.0", - "@types/webpack-env": "1.18.8" + "@types/webpack-env": "1.18.8", + "@vscode/test-electron": "^1.6.2", + "glob": "~7.0.5", + "mocha": "^10.1.0" } } diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/runTest.ts b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/runTest.ts new file mode 100644 index 00000000000..80f8cb2b5af --- /dev/null +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/runTest.ts @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as path from 'path'; + +import { runTests } from '@vscode/test-electron'; + +async function main(): Promise { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath: string = path.resolve(__dirname, '../../'); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath: string = path.resolve(__dirname, './suite/index'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + // eslint-disable-next-line no-console + console.error('Failed to run tests'); + process.exit(1); + } +} + +// eslint-disable-next-line @typescript-eslint/no-floating-promises +main(); diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts new file mode 100644 index 00000000000..a7888c09c5c --- /dev/null +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts @@ -0,0 +1,102 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as assert from 'assert'; +import * as vscode from 'vscode'; + +suite('Playwright Local Browser Server Extension Test Suite', () => { + vscode.window.showInformationMessage('Start all tests.'); + + test('Extension should be present', () => { + const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; + const extension: vscode.Extension | undefined = + vscode.extensions.getExtension(extensionId); + assert.ok(extension, `Extension ${extensionId} should be installed`); + }); + + test('Extension should activate', async () => { + const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; + const extension: vscode.Extension | undefined = + vscode.extensions.getExtension(extensionId); + assert.ok(extension, 'Extension should be installed'); + + await extension.activate(); + assert.strictEqual(extension.isActive, true, 'Extension should be active'); + }); + + suite('Command Registration Tests', () => { + const commands: string[] = [ + 'playwright-local-browser-server.start', + 'playwright-local-browser-server.stop', + 'playwright-local-browser-server.manageAllowlist', + 'playwright-local-browser-server.showLog', + 'playwright-local-browser-server.showSettings', + 'playwright-local-browser-server.showMenu' + ]; + + commands.forEach((commandId) => { + test(`Command '${commandId}' should be registered`, async () => { + const allCommands: string[] = await vscode.commands.getCommands(true); + assert.ok( + allCommands.includes(commandId), + `Command '${commandId}' should be registered` + ); + }); + }); + }); + + suite('Command Execution Tests', () => { + suiteSetup(async () => { + // Ensure extension is activated before testing command execution + const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; + const extension: vscode.Extension | undefined = + vscode.extensions.getExtension(extensionId); + if (extension && !extension.isActive) { + await extension.activate(); + } + }); + + test('Command playwright-local-browser-server.showLog should execute without error', async () => { + await vscode.commands.executeCommand('playwright-local-browser-server.showLog'); + // If we get here without throwing, the command executed successfully + assert.ok(true, 'showLog command executed'); + }); + + test('Command playwright-local-browser-server.showSettings should execute without error', async () => { + await vscode.commands.executeCommand('playwright-local-browser-server.showSettings'); + // If we get here without throwing, the command executed successfully + assert.ok(true, 'showSettings command executed'); + }); + + // Note: We skip testing start, stop, manageAllowlist, and showMenu commands + // because they show interactive dialogs that would block automated testing. + // In a real-world scenario, these would need to be mocked or use + // dependency injection to allow testing without user interaction. + }); + + suite('Package.json Command Validation', () => { + test('All commands in package.json should be registered', async () => { + // Get the extension's package.json + const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; + const extension: vscode.Extension | undefined = + vscode.extensions.getExtension(extensionId); + assert.ok(extension, 'Extension should be installed'); + + const packageJson: { contributes?: { commands?: Array<{ command: string }> } } = + extension.packageJSON; + const contributedCommands: string[] = + packageJson.contributes?.commands?.map((cmd: { command: string }) => cmd.command) || []; + + // Get all registered commands + const allCommands: string[] = await vscode.commands.getCommands(true); + + // Verify each contributed command is registered + for (const commandId of contributedCommands) { + assert.ok( + allCommands.includes(commandId), + `Command '${commandId}' from package.json should be registered` + ); + } + }); + }); +}); diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts new file mode 100644 index 00000000000..a4527237b66 --- /dev/null +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as path from 'path'; +import Mocha from 'mocha'; +import glob from 'glob'; + +export function run(): Promise { + // Create the mocha test + const mocha: Mocha = new Mocha({ + ui: 'tdd', + color: true + }); + + const testsRoot: string = path.resolve(__dirname, '..'); + + return new Promise((resolve, reject) => { + glob('**/**.test.js', { cwd: testsRoot }, (err1, files) => { + if (err1) { + return reject(err1); + } + + // Add files to the test suite + files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run((failures) => { + if (failures > 0) { + reject(new Error(`${failures} tests failed.`)); + } else { + resolve(); + } + }); + } catch (err2) { + // eslint-disable-next-line no-console + console.error(err2); + reject(err2); + } + }); + }); +} From 167e1356ab9b33f4babd4890633b89b7654cc8a3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 22:48:37 +0000 Subject: [PATCH 3/5] Fix linting error in extension tests Co-authored-by: TheLarkInn <3408176+TheLarkInn@users.noreply.github.com> --- .../config/subspaces/default/pnpm-lock.yaml | 51 ++++++++++++------- .../config/subspaces/default/repo-state.json | 2 +- .../src/test/suite/extension.test.ts | 21 +++----- 3 files changed, 41 insertions(+), 33 deletions(-) diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 4fbb53f153d..f4ea90756a7 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -783,7 +783,7 @@ importers: version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/cli': specifier: ~6.4.18 - version: 6.4.22(eslint@9.37.0)(jest@29.3.1(@types/node@20.17.19))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + version: 6.4.22(eslint@9.37.0)(jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) '@storybook/components': specifier: ~6.4.18 version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -819,7 +819,7 @@ importers: version: 5.2.7(webpack@4.47.0) jest: specifier: ~29.3.1 - version: 29.3.1(@types/node@20.17.19) + version: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0) react: specifier: ~17.0.2 version: 17.0.2 @@ -1005,7 +1005,7 @@ importers: version: 5.2.7(webpack@5.103.0) jest: specifier: ~29.3.1 - version: 29.3.1(@types/node@20.17.19) + version: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0) react: specifier: ~19.2.3 version: 19.2.4 @@ -5219,6 +5219,12 @@ importers: '@rushstack/heft-vscode-extension-rig': specifier: workspace:* version: link:../../rigs/heft-vscode-extension-rig + '@types/glob': + specifier: 7.1.1 + version: 7.1.1 + '@types/mocha': + specifier: 10.0.6 + version: 10.0.6 '@types/node': specifier: 20.17.19 version: 20.17.19 @@ -5228,6 +5234,15 @@ importers: '@types/webpack-env': specifier: 1.18.8 version: 1.18.8 + '@vscode/test-electron': + specifier: ^1.6.2 + version: 1.6.2 + glob: + specifier: ~7.0.5 + version: 7.0.6 + mocha: + specifier: ^10.1.0 + version: 10.8.2 ../../../vscode-extensions/rush-vscode-command-webview: dependencies: @@ -22376,7 +22391,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -22390,7 +22405,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.9.3) + jest-config: 29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -25101,7 +25116,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/cli@6.4.22(eslint@9.37.0)(jest@29.3.1(@types/node@20.17.19))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': + '@storybook/cli@6.4.22(eslint@9.37.0)(jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': dependencies: '@babel/core': 7.20.12 '@babel/preset-env': 7.28.6(@babel/core@7.20.12) @@ -25121,7 +25136,7 @@ snapshots: fs-extra: 9.1.0 get-port: 5.1.1 globby: 11.1.0 - jest: 29.3.1(@types/node@20.17.19) + jest: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0) jscodeshift: 0.13.1(@babel/preset-env@7.28.6(@babel/core@7.20.12)) json5: 2.2.3 leven: 3.1.0 @@ -28714,13 +28729,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.12 - create-jest@29.7.0(@types/node@20.17.19): + create-jest@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.19) + jest-config: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -32086,16 +32101,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.17.19): + jest-cli@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0): dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) '@jest/test-result': 29.7.0(@types/node@20.17.19) '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.19) + create-jest: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.19) + jest-config: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -32165,7 +32180,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.19): + jest-config@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0): dependencies: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.7.0(@types/node@20.17.19) @@ -32195,7 +32210,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.9.3): + jest-config@29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0): dependencies: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.7.0(@types/node@22.9.3) @@ -32583,12 +32598,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.3.1(@types/node@20.17.19): + jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0): dependencies: '@jest/core': 29.5.0(babel-plugin-macros@3.1.0) '@jest/types': 29.5.0 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.19) + jest-cli: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -37311,7 +37326,7 @@ snapshots: wide-align@1.1.5: dependencies: - string-width: 1.0.2 + string-width: 4.2.3 widest-line@3.1.0: dependencies: diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index 485952c12d6..5b4d8a6e20b 100644 --- a/common/config/subspaces/default/repo-state.json +++ b/common/config/subspaces/default/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "b0dbc9dd6df6e790055edb199b9d85eb3a0f200f", + "pnpmShrinkwrapHash": "558d394293c3672c682dbbb67d513799873503f3", "preferredVersionsHash": "a9b67c38568259823f9cfb8270b31bf6d8470b27" } diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts index a7888c09c5c..b47a0f806d5 100644 --- a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/extension.test.ts @@ -5,19 +5,18 @@ import * as assert from 'assert'; import * as vscode from 'vscode'; suite('Playwright Local Browser Server Extension Test Suite', () => { + // eslint-disable-next-line @typescript-eslint/no-floating-promises vscode.window.showInformationMessage('Start all tests.'); test('Extension should be present', () => { const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; - const extension: vscode.Extension | undefined = - vscode.extensions.getExtension(extensionId); + const extension: vscode.Extension | undefined = vscode.extensions.getExtension(extensionId); assert.ok(extension, `Extension ${extensionId} should be installed`); }); test('Extension should activate', async () => { const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; - const extension: vscode.Extension | undefined = - vscode.extensions.getExtension(extensionId); + const extension: vscode.Extension | undefined = vscode.extensions.getExtension(extensionId); assert.ok(extension, 'Extension should be installed'); await extension.activate(); @@ -37,10 +36,7 @@ suite('Playwright Local Browser Server Extension Test Suite', () => { commands.forEach((commandId) => { test(`Command '${commandId}' should be registered`, async () => { const allCommands: string[] = await vscode.commands.getCommands(true); - assert.ok( - allCommands.includes(commandId), - `Command '${commandId}' should be registered` - ); + assert.ok(allCommands.includes(commandId), `Command '${commandId}' should be registered`); }); }); }); @@ -49,8 +45,7 @@ suite('Playwright Local Browser Server Extension Test Suite', () => { suiteSetup(async () => { // Ensure extension is activated before testing command execution const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; - const extension: vscode.Extension | undefined = - vscode.extensions.getExtension(extensionId); + const extension: vscode.Extension | undefined = vscode.extensions.getExtension(extensionId); if (extension && !extension.isActive) { await extension.activate(); } @@ -78,12 +73,10 @@ suite('Playwright Local Browser Server Extension Test Suite', () => { test('All commands in package.json should be registered', async () => { // Get the extension's package.json const extensionId: string = 'ms-RushStack.playwright-local-browser-server'; - const extension: vscode.Extension | undefined = - vscode.extensions.getExtension(extensionId); + const extension: vscode.Extension | undefined = vscode.extensions.getExtension(extensionId); assert.ok(extension, 'Extension should be installed'); - const packageJson: { contributes?: { commands?: Array<{ command: string }> } } = - extension.packageJSON; + const packageJson: { contributes?: { commands?: Array<{ command: string }> } } = extension.packageJSON; const contributedCommands: string[] = packageJson.contributes?.commands?.map((cmd: { command: string }) => cmd.command) || []; From 84954f186af1edffd5724ae4c937348b0750e12e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 22:49:08 +0000 Subject: [PATCH 4/5] Add documentation for VS Code extension tests Co-authored-by: TheLarkInn <3408176+TheLarkInn@users.noreply.github.com> --- .../src/test/README.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/README.md diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/README.md b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/README.md new file mode 100644 index 00000000000..38cc68d1746 --- /dev/null +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/README.md @@ -0,0 +1,63 @@ +# VS Code Extension Tests + +This directory contains the test harness for the Playwright Local Browser Server VS Code extension using the VS Code Extension Host. + +## Test Structure + +- **runTest.ts**: Entry point for running tests. Uses `@vscode/test-electron` to download VS Code and run the test suite. +- **suite/index.ts**: Mocha test suite configuration that discovers and runs all `*.test.js` files. +- **suite/extension.test.ts**: Main test file containing tests for: + - Extension installation and activation + - Command registration validation + - Command execution tests + - Package.json command validation + +## Running Tests + +To run the tests: + +```bash +npm test +``` + +Or using Rush from the repository root: + +```bash +rush test --to playwright-local-browser-server +``` + +The `pretest` script automatically builds the extension before running tests. + +## Test Coverage + +The test suite validates: + +1. **Extension Presence**: Verifies the extension is installed +2. **Extension Activation**: Ensures the extension activates correctly +3. **Command Registration**: Validates all commands from package.json are registered: + - `playwright-local-browser-server.start` + - `playwright-local-browser-server.stop` + - `playwright-local-browser-server.manageAllowlist` + - `playwright-local-browser-server.showLog` + - `playwright-local-browser-server.showSettings` + - `playwright-local-browser-server.showMenu` +4. **Command Execution**: Tests non-interactive commands (`showLog`, `showSettings`) + +## Limitations + +- Interactive commands (`start`, `stop`, `manageAllowlist`, `showMenu`) are tested for registration but not execution, as they show dialogs that would block automated testing +- Tests require network access to download VS Code on first run +- The downloaded VS Code instance is cached by `@vscode/test-electron` + +## Test Framework + +- **Test Runner**: [VS Code Extension Test](https://code.visualstudio.com/api/working-with-extensions/testing-extension) +- **Test Framework**: [Mocha](https://mochajs.org/) +- **Assertions**: Node.js `assert` module + +## Future Improvements + +To test interactive commands without blocking on dialogs, consider: +- Mocking VS Code UI interactions +- Using dependency injection to allow testing without user interaction +- Creating unit tests for command handlers separately from integration tests From 3be82a3212013c7ce98d0f7ed43d8c1b6a92b8ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 22:49:59 +0000 Subject: [PATCH 5/5] Fix glob pattern to correctly match test files Co-authored-by: TheLarkInn <3408176+TheLarkInn@users.noreply.github.com> --- .../src/test/suite/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts index a4527237b66..9c326dce376 100644 --- a/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/src/test/suite/index.ts @@ -15,7 +15,7 @@ export function run(): Promise { const testsRoot: string = path.resolve(__dirname, '..'); return new Promise((resolve, reject) => { - glob('**/**.test.js', { cwd: testsRoot }, (err1, files) => { + glob('**/*.test.js', { cwd: testsRoot }, (err1, files) => { if (err1) { return reject(err1); }