diff --git a/packages/playwright-core/src/inProcessFactory.ts b/packages/playwright-core/src/inProcessFactory.ts index 2f86598fc6..86539217f2 100644 --- a/packages/playwright-core/src/inProcessFactory.ts +++ b/packages/playwright-core/src/inProcessFactory.ts @@ -19,9 +19,10 @@ import { createPlaywright, DispatcherConnection, RootDispatcher, PlaywrightDispa import { Connection } from './client/connection'; import { BrowserServerLauncherImpl } from './browserServerImpl'; import { AndroidServerLauncherImpl } from './androidServerImpl'; +import type { Language } from './server/isomorphic/locatorGenerators'; export function createInProcessPlaywright(): PlaywrightAPI { - const playwright = createPlaywright('javascript'); + const playwright = createPlaywright((process.env.PW_LANG_NAME as Language | undefined) || 'javascript'); const clientConnection = new Connection(); const dispatcherConnection = new DispatcherConnection(true /* local */); diff --git a/tests/installation/playwright-cli-install-should-work-with-languages.spec.ts b/tests/installation/playwright-cli-install-should-work-with-languages.spec.ts new file mode 100755 index 0000000000..4a3a913898 --- /dev/null +++ b/tests/installation/playwright-cli-install-should-work-with-languages.spec.ts @@ -0,0 +1,39 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { test, expect } from './npmTest'; + +test('codegen should print the right install command without browsers', async ({ exec }) => { + await exec('npm i --foreground-scripts playwright', { env: { PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1' } }); + + const pwLangName2InstallCommand = { + 'java': 'mvn exec:java -e -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args="install"', + 'python': 'playwright install', + 'csharp': 'pwsh bin/Debug/netX/playwright.ps1 install', + '': 'npx playwright install', + }; + + for (const [langName, installCommand] of Object.entries(pwLangName2InstallCommand)) { + await test.step(`codegen should work for ${langName}`, async () => { + const result = await exec('npx playwright codegen', { + expectToExitWithError: true, + env: { + PW_LANG_NAME: langName, + } + }); + expect(result).toContain(installCommand); + }); + } +});