@azure/create-microsoft-playwright-testing 1.0.0-beta.1 → 1.0.0-beta.2
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/CHANGELOG.md +8 -0
- package/dist/commonjs/bin/init.d.ts.map +1 -0
- package/dist/{bin → commonjs/bin}/init.js +6 -6
- package/dist/commonjs/bin/init.js.map +1 -0
- package/dist/{constants.d.ts → commonjs/constants.d.ts} +1 -1
- package/dist/commonjs/constants.d.ts.map +1 -0
- package/dist/commonjs/constants.js.map +1 -0
- package/dist/{index.d.ts.map → commonjs/index.d.ts.map} +1 -1
- package/dist/{index.js → commonjs/index.js} +4 -5
- package/dist/commonjs/index.js.map +1 -0
- package/dist/{initialize.d.ts → commonjs/initialize.d.ts} +1 -1
- package/dist/commonjs/initialize.d.ts.map +1 -0
- package/dist/{initialize.js → commonjs/initialize.js} +15 -15
- package/dist/commonjs/initialize.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/{packageManager.d.ts → commonjs/packageManager.d.ts} +1 -1
- package/dist/commonjs/packageManager.d.ts.map +1 -0
- package/dist/{packageManager.js → commonjs/packageManager.js} +4 -4
- package/dist/commonjs/packageManager.js.map +1 -0
- package/dist/commonjs/types.d.ts.map +1 -0
- package/dist/commonjs/types.js.map +1 -0
- package/dist/{utils.d.ts → commonjs/utils.d.ts} +1 -1
- package/dist/commonjs/utils.d.ts.map +1 -0
- package/dist/{utils.js → commonjs/utils.js} +20 -20
- package/dist/commonjs/utils.js.map +1 -0
- package/dist/esm/bin/init.d.ts +2 -0
- package/dist/esm/bin/init.d.ts.map +1 -0
- package/dist/esm/bin/init.js +19 -0
- package/dist/esm/bin/init.js.map +1 -0
- package/dist/esm/constants.d.ts +19 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +20 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/initialize.d.ts +16 -0
- package/dist/esm/initialize.d.ts.map +1 -0
- package/dist/esm/initialize.js +114 -0
- package/dist/esm/initialize.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/packageManager.d.ts +17 -0
- package/dist/esm/packageManager.d.ts.map +1 -0
- package/dist/esm/packageManager.js +49 -0
- package/dist/esm/packageManager.js.map +1 -0
- package/dist/esm/types.d.ts +17 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +4 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +8 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +92 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +47 -26
- package/dist/bin/init.d.ts.map +0 -1
- package/dist/bin/init.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/initialize.d.ts.map +0 -1
- package/dist/initialize.js.map +0 -1
- package/dist/packageManager.d.ts.map +0 -1
- package/dist/packageManager.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- /package/dist/{bin → commonjs/bin}/init.d.ts +0 -0
- /package/dist/{constants.js → commonjs/constants.js} +0 -0
- /package/dist/{index.d.ts → commonjs/index.d.ts} +0 -0
- /package/dist/{types.d.ts → commonjs/types.d.ts} +0 -0
- /package/dist/{types.js → commonjs/types.js} +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import prompts from "prompts";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import { Extensions, Languages, Messages } from "./constants.js";
|
|
6
|
+
import { executeCommand, getFileReferenceForImport } from "./utils.js";
|
|
7
|
+
import { getPackageManager } from "./packageManager.js";
|
|
8
|
+
const questions = [
|
|
9
|
+
{
|
|
10
|
+
type: "confirm",
|
|
11
|
+
name: "canOverride",
|
|
12
|
+
message: Messages.CAN_OVERRIDE_MESSAGE,
|
|
13
|
+
initial: true,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
type: (prev) => (prev ? null : "confirm"),
|
|
17
|
+
name: "confirmationForExit",
|
|
18
|
+
message: Messages.CONFIRMATION_FOR_EXIT_MESSAGE,
|
|
19
|
+
initial: true,
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class PlaywrightServiceInitialize {
|
|
23
|
+
constructor(setupConfig) {
|
|
24
|
+
this.addServiceSupportToTestSuite = async () => {
|
|
25
|
+
const canProceedWithServiceInitialization = await this.checkIfServiceConfigCanBeAdded(); // if service config already present, ask user for overwrite permission
|
|
26
|
+
if (!canProceedWithServiceInitialization)
|
|
27
|
+
return;
|
|
28
|
+
await this.installServicePackage(); // install service packages
|
|
29
|
+
await this.createServiceConfig(); // create service config file
|
|
30
|
+
this.displayAdditionalInformation(); // display additional information
|
|
31
|
+
};
|
|
32
|
+
this.checkIfServiceConfigCanBeAdded = async () => {
|
|
33
|
+
if (!this.isServiceConfigFileAlreadyPresent())
|
|
34
|
+
return true;
|
|
35
|
+
const response = (await prompts.prompt(questions, {
|
|
36
|
+
onCancel: this.promptOnCancel,
|
|
37
|
+
}));
|
|
38
|
+
if (response.canOverride)
|
|
39
|
+
return true;
|
|
40
|
+
if (!response.confirmationForExit)
|
|
41
|
+
return this.checkIfServiceConfigCanBeAdded();
|
|
42
|
+
console.log(`\n${Messages.SETUP_PROCESS_EXIT_MESSAGE}`);
|
|
43
|
+
return false;
|
|
44
|
+
};
|
|
45
|
+
this.promptOnCancel = () => {
|
|
46
|
+
process.exit(0);
|
|
47
|
+
};
|
|
48
|
+
this.isServiceConfigFileAlreadyPresent = () => {
|
|
49
|
+
return fs.existsSync(this.getServiceConfigFileName());
|
|
50
|
+
};
|
|
51
|
+
this.displayAdditionalInformation = () => {
|
|
52
|
+
const runCommandParallelWorkers = this._packageManager.runCommand("playwright", `test -c ${this.getServiceConfigFileName()} --workers=20`);
|
|
53
|
+
console.log(`\n\nTo run playwrights tests using Playwright Service\n`);
|
|
54
|
+
console.log(`\t${runCommandParallelWorkers}\n`);
|
|
55
|
+
console.log("\nPlaywright Service Portal - https://playwright.microsoft.com/");
|
|
56
|
+
console.log("Getting Started - https://aka.ms/mpt/quickstart\n");
|
|
57
|
+
console.log("If you're already using the Microsoft Playwright Testing service, please review the quickstart guide [https://aka.ms/mpt/quickstart] to ensure your tests continue running smoothly.");
|
|
58
|
+
console.log("We've introduced changes related to authentication. You'll need to update the new config file to align with these changes.");
|
|
59
|
+
};
|
|
60
|
+
this.installServicePackage = async () => {
|
|
61
|
+
const command = this._packageManager.installDevDependencyCommand("@azure/microsoft-playwright-testing");
|
|
62
|
+
console.log(`Installing Service package (${command})`);
|
|
63
|
+
await executeCommand(command);
|
|
64
|
+
};
|
|
65
|
+
this.createServiceConfig = async () => {
|
|
66
|
+
const serviceConfigFile = this.getServiceConfigFileName();
|
|
67
|
+
const serviceConfigFileContent = this.getServiceConfigContent();
|
|
68
|
+
await fs.promises.writeFile(serviceConfigFile, serviceConfigFileContent);
|
|
69
|
+
console.log(`Success! Created service configuration file - ${serviceConfigFile}`);
|
|
70
|
+
};
|
|
71
|
+
this.getServiceConfigContent = () => {
|
|
72
|
+
const customerConfigFileName = getFileReferenceForImport(this._setupConfig.playwrightConfigFile);
|
|
73
|
+
const importCommandTypeScript = `import { defineConfig } from '@playwright/test';
|
|
74
|
+
import { getServiceConfig, ServiceOS } from '@azure/microsoft-playwright-testing';
|
|
75
|
+
import config from '${customerConfigFileName}';
|
|
76
|
+
`;
|
|
77
|
+
const importCommandJavaScript = `const { defineConfig } = require('@playwright/test');
|
|
78
|
+
const { getServiceConfig, ServiceOS } = require('@azure/microsoft-playwright-testing');
|
|
79
|
+
const config = require('${customerConfigFileName}');
|
|
80
|
+
`;
|
|
81
|
+
const importCommand = this._setupConfig.projectLanguage === Languages.TypeScript
|
|
82
|
+
? importCommandTypeScript
|
|
83
|
+
: importCommandJavaScript;
|
|
84
|
+
const content = importCommand +
|
|
85
|
+
`
|
|
86
|
+
/* Learn more about service configuration at https://aka.ms/mpt/config */
|
|
87
|
+
export default defineConfig(
|
|
88
|
+
config,
|
|
89
|
+
getServiceConfig(config, {
|
|
90
|
+
exposeNetwork: '<loopback>',
|
|
91
|
+
timeout: 30000,
|
|
92
|
+
os: ServiceOS.LINUX,
|
|
93
|
+
useCloudHostedBrowsers: true // Set to false if you want to only use reporting and not cloud hosted browsers
|
|
94
|
+
}),
|
|
95
|
+
{
|
|
96
|
+
/*
|
|
97
|
+
Playwright Testing service reporter is added by default.
|
|
98
|
+
This will override any reporter options specified in the base playwright config.
|
|
99
|
+
If you are using more reporters, please update your configuration accordingly.
|
|
100
|
+
*/
|
|
101
|
+
reporter: [['list'], ['@azure/microsoft-playwright-testing/reporter']],
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
`;
|
|
105
|
+
return content;
|
|
106
|
+
};
|
|
107
|
+
this.getServiceConfigFileName = () => {
|
|
108
|
+
return "playwright.service.config" + Extensions[this._setupConfig.projectLanguage];
|
|
109
|
+
};
|
|
110
|
+
this._setupConfig = setupConfig;
|
|
111
|
+
this._packageManager = getPackageManager();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=initialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../src/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PromptObject } from \"prompts\";\nimport prompts from \"prompts\";\nimport fs from \"node:fs\";\nimport { Extensions, Languages, Messages } from \"./constants.js\";\nimport type {\n OverridePromptResponse,\n PackageManager,\n PlaywrightServiceInitConfig,\n} from \"./types.js\";\nimport { executeCommand, getFileReferenceForImport } from \"./utils.js\";\nimport { getPackageManager } from \"./packageManager.js\";\n\nconst questions: PromptObject[] = [\n {\n type: \"confirm\",\n name: \"canOverride\",\n message: Messages.CAN_OVERRIDE_MESSAGE,\n initial: true,\n },\n {\n type: (prev: boolean) => (prev ? null : \"confirm\"),\n name: \"confirmationForExit\",\n message: Messages.CONFIRMATION_FOR_EXIT_MESSAGE,\n initial: true,\n },\n];\n\nexport class PlaywrightServiceInitialize {\n private _setupConfig: PlaywrightServiceInitConfig;\n private _packageManager: PackageManager;\n\n constructor(setupConfig: PlaywrightServiceInitConfig) {\n this._setupConfig = setupConfig;\n this._packageManager = getPackageManager();\n }\n\n public addServiceSupportToTestSuite = async (): Promise<void> => {\n const canProceedWithServiceInitialization = await this.checkIfServiceConfigCanBeAdded(); // if service config already present, ask user for overwrite permission\n if (!canProceedWithServiceInitialization) return;\n await this.installServicePackage(); // install service packages\n await this.createServiceConfig(); // create service config file\n this.displayAdditionalInformation(); // display additional information\n };\n\n private checkIfServiceConfigCanBeAdded = async (): Promise<boolean> => {\n if (!this.isServiceConfigFileAlreadyPresent()) return true;\n const response = (await prompts.prompt(questions, {\n onCancel: this.promptOnCancel,\n })) as OverridePromptResponse;\n if (response.canOverride) return true;\n if (!response.confirmationForExit) return this.checkIfServiceConfigCanBeAdded();\n\n console.log(`\\n${Messages.SETUP_PROCESS_EXIT_MESSAGE}`);\n return false;\n };\n\n private promptOnCancel = (): never => {\n process.exit(0);\n };\n\n private isServiceConfigFileAlreadyPresent = (): boolean => {\n return fs.existsSync(this.getServiceConfigFileName());\n };\n\n private displayAdditionalInformation = (): void => {\n const runCommandParallelWorkers = this._packageManager.runCommand(\n \"playwright\",\n `test -c ${this.getServiceConfigFileName()} --workers=20`,\n );\n\n console.log(`\\n\\nTo run playwrights tests using Playwright Service\\n`);\n console.log(`\\t${runCommandParallelWorkers}\\n`);\n\n console.log(\"\\nPlaywright Service Portal - https://playwright.microsoft.com/\");\n console.log(\"Getting Started - https://aka.ms/mpt/quickstart\\n\");\n\n console.log(\n \"If you're already using the Microsoft Playwright Testing service, please review the quickstart guide [https://aka.ms/mpt/quickstart] to ensure your tests continue running smoothly.\",\n );\n console.log(\n \"We've introduced changes related to authentication. You'll need to update the new config file to align with these changes.\",\n );\n };\n\n private installServicePackage = async (): Promise<void> => {\n const command = this._packageManager.installDevDependencyCommand(\n \"@azure/microsoft-playwright-testing\",\n );\n console.log(`Installing Service package (${command})`);\n await executeCommand(command);\n };\n\n private createServiceConfig = async (): Promise<void> => {\n const serviceConfigFile = this.getServiceConfigFileName();\n const serviceConfigFileContent = this.getServiceConfigContent();\n await fs.promises.writeFile(serviceConfigFile, serviceConfigFileContent);\n console.log(`Success! Created service configuration file - ${serviceConfigFile}`);\n };\n\n private getServiceConfigContent = (): string => {\n const customerConfigFileName = getFileReferenceForImport(\n this._setupConfig.playwrightConfigFile,\n );\n\n const importCommandTypeScript = `import { defineConfig } from '@playwright/test';\nimport { getServiceConfig, ServiceOS } from '@azure/microsoft-playwright-testing';\nimport config from '${customerConfigFileName}';\n`;\n\n const importCommandJavaScript = `const { defineConfig } = require('@playwright/test');\nconst { getServiceConfig, ServiceOS } = require('@azure/microsoft-playwright-testing');\nconst config = require('${customerConfigFileName}');\n`;\n\n const importCommand =\n this._setupConfig.projectLanguage === Languages.TypeScript\n ? importCommandTypeScript\n : importCommandJavaScript;\n\n const content =\n importCommand +\n `\n/* Learn more about service configuration at https://aka.ms/mpt/config */\nexport default defineConfig(\n config,\n getServiceConfig(config, {\n exposeNetwork: '<loopback>',\n timeout: 30000,\n os: ServiceOS.LINUX,\n useCloudHostedBrowsers: true // Set to false if you want to only use reporting and not cloud hosted browsers\n }),\n {\n /* \n Playwright Testing service reporter is added by default.\n This will override any reporter options specified in the base playwright config.\n If you are using more reporters, please update your configuration accordingly.\n */\n reporter: [['list'], ['@azure/microsoft-playwright-testing/reporter']],\n }\n);\n`;\n return content;\n };\n\n private getServiceConfigFileName = (): string => {\n return \"playwright.service.config\" + Extensions[this._setupConfig.projectLanguage];\n };\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PackageManager } from "./types.js";
|
|
2
|
+
export declare class NPM implements PackageManager {
|
|
3
|
+
installDevDependencyCommand: (packageName: string) => string;
|
|
4
|
+
runCommand: (command: string, args: string) => string;
|
|
5
|
+
}
|
|
6
|
+
export declare class PNPM implements PackageManager {
|
|
7
|
+
private useWorkspace;
|
|
8
|
+
constructor();
|
|
9
|
+
installDevDependencyCommand: (packageName: string) => string;
|
|
10
|
+
runCommand: (command: string, args: string) => string;
|
|
11
|
+
}
|
|
12
|
+
export declare class Yarn implements PackageManager {
|
|
13
|
+
installDevDependencyCommand: (packageName: string) => string;
|
|
14
|
+
runCommand: (command: string, args: string) => string;
|
|
15
|
+
}
|
|
16
|
+
export declare const getPackageManager: () => PackageManager;
|
|
17
|
+
//# sourceMappingURL=packageManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.d.ts","sourceRoot":"","sources":["../../src/packageManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,qBAAa,GAAI,YAAW,cAAc;IACxC,2BAA2B,gBAAiB,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,YAAa,MAAM,QAAQ,MAAM,KAAG,MAAM,CAElD;CACH;AAED,qBAAa,IAAK,YAAW,cAAc;IACzC,OAAO,CAAC,YAAY,CAAkB;;IAMtC,2BAA2B,gBAAiB,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,YAAa,MAAM,QAAQ,MAAM,KAAG,MAAM,CAElD;CACH;AAED,qBAAa,IAAK,YAAW,cAAc;IACzC,2BAA2B,gBAAiB,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,YAAa,MAAM,QAAQ,MAAM,KAAG,MAAM,CAElD;CACH;AAGD,eAAO,MAAM,iBAAiB,QAAO,cAOpC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { cwd } from "node:process";
|
|
5
|
+
import { resolve } from "node:path";
|
|
6
|
+
export class NPM {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.installDevDependencyCommand = (packageName) => {
|
|
9
|
+
return `npm install --save-dev ${packageName}`;
|
|
10
|
+
};
|
|
11
|
+
this.runCommand = (command, args) => {
|
|
12
|
+
return `npx ${command} ${args}`;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class PNPM {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.useWorkspace = false;
|
|
19
|
+
this.installDevDependencyCommand = (packageName) => {
|
|
20
|
+
return `pnpm add --save-dev ${this.useWorkspace ? "-w " : ""}${packageName}`;
|
|
21
|
+
};
|
|
22
|
+
this.runCommand = (command, args) => {
|
|
23
|
+
return `pnpm ${command} ${args}`;
|
|
24
|
+
};
|
|
25
|
+
this.useWorkspace = existsSync(resolve(cwd(), "pnpm-workspace.yaml"));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class Yarn {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.installDevDependencyCommand = (packageName) => {
|
|
31
|
+
return `yarn add --dev ${packageName}`;
|
|
32
|
+
};
|
|
33
|
+
this.runCommand = (command, args) => {
|
|
34
|
+
return `yarn ${command} ${args}`;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// https://stackoverflow.com/questions/68133683/is-there-a-cross-platform-way-to-get-the-name-of-the-parent-process-in-node-js
|
|
39
|
+
export const getPackageManager = () => {
|
|
40
|
+
if (process.env["npm_config_user_agent"]) {
|
|
41
|
+
const userAgent = process.env["npm_config_user_agent"];
|
|
42
|
+
if (userAgent.includes("yarn"))
|
|
43
|
+
return new Yarn();
|
|
44
|
+
if (userAgent.includes("pnpm"))
|
|
45
|
+
return new PNPM();
|
|
46
|
+
}
|
|
47
|
+
return new NPM();
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=packageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/packageManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,GAAG;IAAhB;QACE,gCAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;YAC5D,OAAO,0BAA0B,WAAW,EAAE,CAAC;QACjD,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;YACrD,OAAO,OAAO,OAAO,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,MAAM,OAAO,IAAI;IAGf;QAFQ,iBAAY,GAAY,KAAK,CAAC;QAMtC,gCAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;YAC5D,OAAO,uBAAuB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/E,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;YACrD,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC;QARA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACxE,CAAC;CAQF;AAED,MAAM,OAAO,IAAI;IAAjB;QACE,gCAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;YAC5D,OAAO,kBAAkB,WAAW,EAAE,CAAC;QACzC,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;YACrD,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,8HAA8H;AAC9H,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAmB,EAAE;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,IAAI,EAAE,CAAC;QAClD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { existsSync } from \"node:fs\";\nimport type { PackageManager } from \"./types.js\";\nimport { cwd } from \"node:process\";\nimport { resolve } from \"node:path\";\n\nexport class NPM implements PackageManager {\n installDevDependencyCommand = (packageName: string): string => {\n return `npm install --save-dev ${packageName}`;\n };\n runCommand = (command: string, args: string): string => {\n return `npx ${command} ${args}`;\n };\n}\n\nexport class PNPM implements PackageManager {\n private useWorkspace: boolean = false;\n\n constructor() {\n this.useWorkspace = existsSync(resolve(cwd(), \"pnpm-workspace.yaml\"));\n }\n\n installDevDependencyCommand = (packageName: string): string => {\n return `pnpm add --save-dev ${this.useWorkspace ? \"-w \" : \"\"}${packageName}`;\n };\n runCommand = (command: string, args: string): string => {\n return `pnpm ${command} ${args}`;\n };\n}\n\nexport class Yarn implements PackageManager {\n installDevDependencyCommand = (packageName: string): string => {\n return `yarn add --dev ${packageName}`;\n };\n runCommand = (command: string, args: string): string => {\n return `yarn ${command} ${args}`;\n };\n}\n\n// https://stackoverflow.com/questions/68133683/is-there-a-cross-platform-way-to-get-the-name-of-the-parent-process-in-node-js\nexport const getPackageManager = (): PackageManager => {\n if (process.env[\"npm_config_user_agent\"]) {\n const userAgent = process.env[\"npm_config_user_agent\"];\n if (userAgent.includes(\"yarn\")) return new Yarn();\n if (userAgent.includes(\"pnpm\")) return new PNPM();\n }\n return new NPM();\n};\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Language = "TypeScript" | "JavaScript";
|
|
2
|
+
export type PlaywrightServiceInitConfig = {
|
|
3
|
+
projectLanguage: Language;
|
|
4
|
+
playwrightConfigFile: string;
|
|
5
|
+
};
|
|
6
|
+
export type CLIArguments = {
|
|
7
|
+
config: string;
|
|
8
|
+
};
|
|
9
|
+
export type OverridePromptResponse = {
|
|
10
|
+
canOverride: boolean;
|
|
11
|
+
confirmationForExit: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type PackageManager = {
|
|
14
|
+
installDevDependencyCommand: (packageName: string) => string;
|
|
15
|
+
runCommand: (command: string, args: string) => string;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AAEnD,MAAM,MAAM,2BAA2B,GAAG;IACxC,eAAe,EAAE,QAAQ,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,2BAA2B,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7D,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport type Language = \"TypeScript\" | \"JavaScript\";\n\nexport type PlaywrightServiceInitConfig = {\n projectLanguage: Language;\n playwrightConfigFile: string;\n};\n\nexport type CLIArguments = {\n config: string;\n};\n\nexport type OverridePromptResponse = {\n canOverride: boolean;\n confirmationForExit: boolean;\n};\n\nexport type PackageManager = {\n installDevDependencyCommand: (packageName: string) => string;\n runCommand: (command: string, args: string) => string;\n};\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CLIArguments, PlaywrightServiceInitConfig } from "./types.js";
|
|
2
|
+
export declare const executeCommand: (command: string) => Promise<string>;
|
|
3
|
+
export declare const getLanguageAndConfigInfoFromDirectory: () => PlaywrightServiceInitConfig;
|
|
4
|
+
export declare const getLanguageAndConfigInfoFromConfigurationFile: (playwrightConfigFile: string) => PlaywrightServiceInitConfig;
|
|
5
|
+
export declare const getFileReferenceForImport: (filePath: string) => string;
|
|
6
|
+
export declare const showHelpForCLI: () => string;
|
|
7
|
+
export declare const parseCLIArguments: () => CLIArguments;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAG5E,eAAO,MAAM,cAAc,YAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAU9D,CAAC;AAEF,eAAO,MAAM,qCAAqC,QAAO,2BAcxD,CAAC;AAEF,eAAO,MAAM,6CAA6C,yBAClC,MAAM,KAC3B,2BAaF,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAAc,MAAM,KAAG,MAW5D,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,MAUjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,YAcpC,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { exec } from "node:child_process";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path, { extname } from "node:path";
|
|
6
|
+
import { ErrorMessages, Extensions, Languages } from "./constants.js";
|
|
7
|
+
export const executeCommand = (command) => {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
exec(command, (error, stdout, _) => {
|
|
10
|
+
if (error) {
|
|
11
|
+
reject(error);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
resolve(stdout);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
export const getLanguageAndConfigInfoFromDirectory = () => {
|
|
20
|
+
if (fs.existsSync("playwright.config.js")) {
|
|
21
|
+
return {
|
|
22
|
+
playwrightConfigFile: "playwright.config.js",
|
|
23
|
+
projectLanguage: Languages.JavaScript,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
else if (fs.existsSync("playwright.config.ts")) {
|
|
27
|
+
return {
|
|
28
|
+
playwrightConfigFile: "playwright.config.ts",
|
|
29
|
+
projectLanguage: Languages.TypeScript,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw new Error(ErrorMessages.NO_CONFIGURATION_FILE_FOUND);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
export const getLanguageAndConfigInfoFromConfigurationFile = (playwrightConfigFile) => {
|
|
37
|
+
const extension = extname(playwrightConfigFile);
|
|
38
|
+
if (extension === Extensions.TypeScript) {
|
|
39
|
+
return {
|
|
40
|
+
playwrightConfigFile,
|
|
41
|
+
projectLanguage: Languages.TypeScript,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
else if (extension === Extensions.JavaScript) {
|
|
45
|
+
return {
|
|
46
|
+
playwrightConfigFile,
|
|
47
|
+
projectLanguage: Languages.JavaScript,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
else
|
|
51
|
+
throw new Error(ErrorMessages.UNSUPPORTED_CONFIGURATION_FILE);
|
|
52
|
+
};
|
|
53
|
+
export const getFileReferenceForImport = (filePath) => {
|
|
54
|
+
const normalizedPath = filePath.split(path.sep).join("/");
|
|
55
|
+
const parsedPath = path.parse(normalizedPath);
|
|
56
|
+
const withoutExtension = path.posix.join(parsedPath.dir, parsedPath.name);
|
|
57
|
+
if (path.isAbsolute(filePath)) {
|
|
58
|
+
return withoutExtension;
|
|
59
|
+
}
|
|
60
|
+
if (!withoutExtension.startsWith("./") && !withoutExtension.startsWith("../")) {
|
|
61
|
+
return `./${withoutExtension}`;
|
|
62
|
+
}
|
|
63
|
+
return withoutExtension;
|
|
64
|
+
};
|
|
65
|
+
export const showHelpForCLI = () => {
|
|
66
|
+
return `
|
|
67
|
+
Usage: index [options]
|
|
68
|
+
|
|
69
|
+
playwright configuration file
|
|
70
|
+
|
|
71
|
+
Options:
|
|
72
|
+
-c, --config <config>
|
|
73
|
+
-h, --help display help for command
|
|
74
|
+
`;
|
|
75
|
+
};
|
|
76
|
+
export const parseCLIArguments = () => {
|
|
77
|
+
const args = process.argv.slice(2);
|
|
78
|
+
const cliArguments = {
|
|
79
|
+
config: "",
|
|
80
|
+
};
|
|
81
|
+
for (let i = 0; i < args.length; i++) {
|
|
82
|
+
if (args[i] === "-c" || args[i] === "--config") {
|
|
83
|
+
cliArguments.config = args[i + 1];
|
|
84
|
+
}
|
|
85
|
+
else if (args[i] === "-h" || args[i] === "--help") {
|
|
86
|
+
console.log(showHelpForCLI());
|
|
87
|
+
process.exit(0);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return cliArguments;
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { exec } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path, { extname } from \"node:path\";\nimport type { CLIArguments, PlaywrightServiceInitConfig } from \"./types.js\";\nimport { ErrorMessages, Extensions, Languages } from \"./constants.js\";\n\nexport const executeCommand = (command: string): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n exec(command, (error, stdout, _) => {\n if (error) {\n reject(error);\n } else {\n resolve(stdout);\n }\n });\n });\n};\n\nexport const getLanguageAndConfigInfoFromDirectory = (): PlaywrightServiceInitConfig => {\n if (fs.existsSync(\"playwright.config.js\")) {\n return {\n playwrightConfigFile: \"playwright.config.js\",\n projectLanguage: Languages.JavaScript,\n };\n } else if (fs.existsSync(\"playwright.config.ts\")) {\n return {\n playwrightConfigFile: \"playwright.config.ts\",\n projectLanguage: Languages.TypeScript,\n };\n } else {\n throw new Error(ErrorMessages.NO_CONFIGURATION_FILE_FOUND);\n }\n};\n\nexport const getLanguageAndConfigInfoFromConfigurationFile = (\n playwrightConfigFile: string,\n): PlaywrightServiceInitConfig => {\n const extension = extname(playwrightConfigFile);\n if (extension === Extensions.TypeScript) {\n return {\n playwrightConfigFile,\n projectLanguage: Languages.TypeScript,\n };\n } else if (extension === Extensions.JavaScript) {\n return {\n playwrightConfigFile,\n projectLanguage: Languages.JavaScript,\n };\n } else throw new Error(ErrorMessages.UNSUPPORTED_CONFIGURATION_FILE);\n};\n\nexport const getFileReferenceForImport = (filePath: string): string => {\n const normalizedPath = filePath.split(path.sep).join(\"/\");\n const parsedPath = path.parse(normalizedPath);\n const withoutExtension = path.posix.join(parsedPath.dir, parsedPath.name);\n if (path.isAbsolute(filePath)) {\n return withoutExtension;\n }\n if (!withoutExtension.startsWith(\"./\") && !withoutExtension.startsWith(\"../\")) {\n return `./${withoutExtension}`;\n }\n return withoutExtension;\n};\n\nexport const showHelpForCLI = (): string => {\n return `\nUsage: index [options]\n\nplaywright configuration file\n\nOptions:\n -c, --config <config>\n -h, --help display help for command\n`;\n};\n\nexport const parseCLIArguments = (): CLIArguments => {\n const args = process.argv.slice(2);\n const cliArguments: CLIArguments = {\n config: \"\",\n };\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"-c\" || args[i] === \"--config\") {\n cliArguments.config = args[i + 1];\n } else if (args[i] === \"-h\" || args[i] === \"--help\") {\n console.log(showHelpForCLI());\n process.exit(0);\n }\n }\n return cliArguments;\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure/create-microsoft-playwright-testing",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"description": "Package to setup @azure/microsoft-playwright-testing",
|
|
5
5
|
"homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/playwrighttesting/create-microsoft-playwright-testing/README.md",
|
|
6
6
|
"sdk-type": "client",
|
|
@@ -22,11 +22,12 @@
|
|
|
22
22
|
"node": ">=18.0.0"
|
|
23
23
|
},
|
|
24
24
|
"sideEffects": false,
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
25
|
+
"type": "module",
|
|
26
|
+
"main": "./dist/commonjs/index.js",
|
|
27
|
+
"module": "./dist/esm/index.js",
|
|
28
|
+
"types": "./dist/commonjs/index.d.ts",
|
|
28
29
|
"bin": {
|
|
29
|
-
"init": "dist/index.js"
|
|
30
|
+
"init": "dist/commonjs/index.js"
|
|
30
31
|
},
|
|
31
32
|
"files": [
|
|
32
33
|
"dist",
|
|
@@ -35,46 +36,42 @@
|
|
|
35
36
|
"CHANGELOG.md"
|
|
36
37
|
],
|
|
37
38
|
"scripts": {
|
|
38
|
-
"
|
|
39
|
-
"build": "
|
|
40
|
-
"build:test": "
|
|
41
|
-
"build:samples": "echo obsolete",
|
|
39
|
+
"build": "npm run clean && dev-tool run build-package",
|
|
40
|
+
"build:samples": "echo Obsolete",
|
|
41
|
+
"build:test": "echo skipped. actual commands inlined in browser test scripts",
|
|
42
42
|
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
|
|
43
|
-
"clean": "rimraf --glob dist *.log dist-test temp types *.tgz *.xml samples/**/test-results/",
|
|
43
|
+
"clean": "dev-tool run vendored rimraf --glob dist *.log dist-test temp types *.tgz *.xml samples/**/test-results/",
|
|
44
44
|
"execute:samples": "echo skipped",
|
|
45
|
+
"extract-api": "echo skipped",
|
|
45
46
|
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
|
|
47
|
+
"integration-test": "npm run integration-test:node && npm run integration-test:browser",
|
|
46
48
|
"integration-test:browser": "echo skipped",
|
|
47
49
|
"integration-test:node": "echo skipped",
|
|
48
|
-
"integration-test": "npm run integration-test:node && npm run integration-test:browser",
|
|
49
|
-
"lint:fix": "eslint package.json CHANGELOG.md README.md src --fix --fix-type [problem,suggestion]",
|
|
50
50
|
"lint": "eslint package.json CHANGELOG.md README.md src",
|
|
51
|
+
"lint:fix": "eslint package.json CHANGELOG.md README.md src --fix --fix-type [problem,suggestion]",
|
|
51
52
|
"pack": "npm pack 2>&1",
|
|
53
|
+
"test": "npm run build:test && npm run unit-test && npm run integration-test",
|
|
52
54
|
"test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
|
|
53
55
|
"test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node",
|
|
54
|
-
"test": "npm run build:test && npm run unit-test && npm run integration-test",
|
|
55
|
-
"unit-test:browser": "echo skipped",
|
|
56
|
-
"unit-test:node": "dev-tool run test:node-ts-input --no-test-proxy -- --timeout 12000 'test/**/*.spec.ts' --exit",
|
|
57
56
|
"unit-test": "npm run unit-test:node && npm run unit-test:browser",
|
|
58
|
-
"
|
|
57
|
+
"unit-test:browser": "echo skipped",
|
|
58
|
+
"unit-test:node": "dev-tool run test:vitest --no-test-proxy",
|
|
59
|
+
"update-snippets": "echo skipped"
|
|
59
60
|
},
|
|
60
61
|
"dependencies": {
|
|
61
62
|
"prompts": "^2.4.2",
|
|
62
63
|
"tslib": "^2.6.0"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
65
|
-
"@
|
|
66
|
-
"@types/prompts": "^2.4.9",
|
|
66
|
+
"@azure-tools/test-utils": "^1.0.1",
|
|
67
67
|
"@azure/dev-tool": "^1.0.0",
|
|
68
|
-
"rimraf": "^5.0.5",
|
|
69
|
-
"typescript": "^5.5.3",
|
|
70
68
|
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
|
|
69
|
+
"@types/node": "^20.12.12",
|
|
70
|
+
"@types/prompts": "^2.4.9",
|
|
71
|
+
"@vitest/coverage-istanbul": "^2.1.2",
|
|
71
72
|
"eslint": "^9.9.0",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"mocha": "^10.0.0",
|
|
75
|
-
"@types/mocha": "^10.0.0",
|
|
76
|
-
"cross-env": "^7.0.2",
|
|
77
|
-
"@azure-tools/test-utils": "^1.0.1"
|
|
73
|
+
"typescript": "~5.6.2",
|
|
74
|
+
"vitest": "^2.1.2"
|
|
78
75
|
},
|
|
79
76
|
"prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
|
|
80
77
|
"//sampleConfiguration": {
|
|
@@ -85,5 +82,29 @@
|
|
|
85
82
|
"requiredResources": {
|
|
86
83
|
"Microsoft Playwright Testing workspace": "https://learn.microsoft.com/azure/playwright-testing/"
|
|
87
84
|
}
|
|
85
|
+
},
|
|
86
|
+
"tshy": {
|
|
87
|
+
"exports": {
|
|
88
|
+
"./package.json": "./package.json",
|
|
89
|
+
".": "./src/index.ts"
|
|
90
|
+
},
|
|
91
|
+
"dialects": [
|
|
92
|
+
"esm",
|
|
93
|
+
"commonjs"
|
|
94
|
+
],
|
|
95
|
+
"selfLink": false
|
|
96
|
+
},
|
|
97
|
+
"exports": {
|
|
98
|
+
"./package.json": "./package.json",
|
|
99
|
+
".": {
|
|
100
|
+
"import": {
|
|
101
|
+
"types": "./dist/esm/index.d.ts",
|
|
102
|
+
"default": "./dist/esm/index.js"
|
|
103
|
+
},
|
|
104
|
+
"require": {
|
|
105
|
+
"types": "./dist/commonjs/index.d.ts",
|
|
106
|
+
"default": "./dist/commonjs/index.js"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
88
109
|
}
|
|
89
110
|
}
|
package/dist/bin/init.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,IAAI,QAAa,OAAO,CAAC,IAAI,CAkBzC,CAAC"}
|
package/dist/bin/init.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,8CAA4D;AAC5D,oCAIkB;AAEX,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IAC5C,MAAM,OAAO,GAAG,IAAA,yBAAiB,GAAE,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC;IACjD,IAAI,2BAAwD,CAAC;IAE7D,IAAI,oBAAoB,EAAE,CAAC;QACzB,2BAA2B,qBACtB,IAAA,qDAA6C,EAAC,oBAAoB,CAAC,CACvE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,2BAA2B,qBACtB,IAAA,6CAAqC,GAAE,CAC3C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,2BAA2B,GAAG,IAAI,wCAA2B,CAAC,2BAA2B,CAAC,CAAC;IACjG,MAAM,2BAA2B,CAAC,4BAA4B,EAAE,CAAC;AACnE,CAAC,CAAC;AAlBW,QAAA,IAAI,QAkBf","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { PlaywrightServiceInitConfig } from \"../types\";\nimport { PlaywrightServiceInitialize } from \"../initialize\";\nimport {\n getLanguageAndConfigInfoFromConfigurationFile,\n getLanguageAndConfigInfoFromDirectory,\n parseCLIArguments,\n} from \"../utils\";\n\nexport const init = async (): Promise<void> => {\n const options = parseCLIArguments();\n const { config: playwrightConfigFile } = options;\n let playwrightServiceInitConfig: PlaywrightServiceInitConfig;\n\n if (playwrightConfigFile) {\n playwrightServiceInitConfig = {\n ...getLanguageAndConfigInfoFromConfigurationFile(playwrightConfigFile),\n };\n } else {\n playwrightServiceInitConfig = {\n ...getLanguageAndConfigInfoFromDirectory(),\n };\n }\n\n console.log(\"\");\n const playwrightServiceInitialize = new PlaywrightServiceInitialize(playwrightServiceInitConfig);\n await playwrightServiceInitialize.addServiceSupportToTestSuite();\n};\n"]}
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,eAAO,MAAM,SAAS;gBACQ,QAAQ;gBACR,QAAQ;CACrC,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAGtB,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAIzB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAMpB,CAAC"}
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIrB,QAAA,SAAS,GAAG;IACvB,UAAU,EAAE,YAAwB;IACpC,UAAU,EAAE,YAAwB;CACrC,CAAC;AAEW,QAAA,UAAU,GAAG;IACxB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEW,QAAA,aAAa,GAAG;IAC3B,2BAA2B,EACzB,2IAA2I;IAC7I,8BAA8B,EAAE,4DAA4D;CAC7F,CAAC;AAEW,QAAA,QAAQ,GAAG;IACtB,oBAAoB,EAClB,+FAA+F;IACjG,6BAA6B,EAC3B,yJAAyJ;IAC3J,0BAA0B,EAAE,oCAAoC;CACjE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Language } from \"./types\";\n\nexport const Languages = {\n TypeScript: \"TypeScript\" as Language,\n JavaScript: \"JavaScript\" as Language,\n};\n\nexport const Extensions = {\n TypeScript: \".ts\",\n JavaScript: \".js\",\n};\n\nexport const ErrorMessages = {\n NO_CONFIGURATION_FILE_FOUND:\n \"Could not find a playwright configuration file in the current directory. Please use --config parameter to specify the configuration file.\",\n UNSUPPORTED_CONFIGURATION_FILE: \"The playwright configuration file passed is not supported.\",\n};\n\nexport const Messages = {\n CAN_OVERRIDE_MESSAGE:\n \"There's already a playwright service configuration file present. Do you want to overwrite it?\",\n CONFIRMATION_FOR_EXIT_MESSAGE:\n \"You won't be able to install and setup up the service without overwriting the existing configuration file. Do you still want to exit the setup process?\",\n SETUP_PROCESS_EXIT_MESSAGE: \"Exiting the service setup process.\",\n};\n"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { init } from \"./bin/init\";\n\n(async () => {\n await init();\n})().catch((err) => {\n console.error(err);\n process.exit(1);\n});\n"],"names":[],"mappings":";;;AAEA;AACA;;AAEA,MAAkC,MAAA,GAAA,OAAA,CAAA,YAAA,CAAA,CAAA;AAElC,CAAC,YAAW;IACV,MAAM,IAAA,MAAI,CAAA,IAAA,GAAE,CAAC;AACf,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACjB,IAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,IAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;;"}
|
package/dist/initialize.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../src/initialize.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0C,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAmB9F,qBAAa,2BAA2B;IACtC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,eAAe,CAAiB;gBAE5B,WAAW,EAAE,2BAA2B;IAK7C,4BAA4B,QAAa,OAAO,CAAC,IAAI,CAAC,CAM3D;IAEF,OAAO,CAAC,8BAA8B,CAUpC;IAEF,OAAO,CAAC,cAAc,CAGpB;IAEF,OAAO,CAAC,iCAAiC,CAEvC;IAEF,OAAO,CAAC,4BAA4B,CAkBlC;IAEF,OAAO,CAAC,qBAAqB,CAM3B;IAEF,OAAO,CAAC,mBAAmB,CAKzB;IAEF,OAAO,CAAC,uBAAuB,CA0C7B;IAEF,OAAO,CAAC,wBAAwB,CAE9B;CACH"}
|
package/dist/initialize.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../src/initialize.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,8DAAgD;AAChD,oDAAoB;AACpB,2CAA8D;AAE9D,mCAAoE;AACpE,qDAAqD;AAErD,MAAM,SAAS,GAAmB;IAChC;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,oBAAQ,CAAC,oBAAoB;QACtC,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,oBAAQ,CAAC,6BAA6B;QAC/C,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,MAAa,2BAA2B;IAItC,YAAY,WAAwC;QAK7C,iCAA4B,GAAG,KAAK,IAAmB,EAAE;YAC9D,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,uEAAuE;YAChK,IAAI,CAAC,mCAAmC;gBAAE,OAAO;YACjD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,2BAA2B;YAC/D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,6BAA6B;YAC/D,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC,iCAAiC;QACxE,CAAC,CAAC;QAEM,mCAA8B,GAAG,KAAK,IAAsB,EAAE;YACpE,IAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC3D,MAAM,QAAQ,GAAG,CAAC,MAAM,iBAAO,CAAC,MAAM,CAAC,SAAS,EAAE;gBAChD,QAAQ,EAAE,IAAI,CAAC,cAAc;aAC9B,CAAC,CAA2B,CAAC;YAC9B,IAAI,QAAQ,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,mBAAmB;gBAAE,OAAO,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAEhF,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAQ,CAAC,0BAA0B,EAAE,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAU,EAAE;YACnC,6CAA6C;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEM,sCAAiC,GAAG,GAAY,EAAE;YACxD,OAAO,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAEM,iCAA4B,GAAG,GAAS,EAAE;YAChD,MAAM,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAC/D,YAAY,EACZ,WAAW,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAC1D,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,yBAAyB,IAAI,CAAC,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YAEjE,OAAO,CAAC,GAAG,CACT,sLAAsL,CACvL,CAAC;YACF,OAAO,CAAC,GAAG,CACT,4HAA4H,CAC7H,CAAC;QACJ,CAAC,CAAC;QAEM,0BAAqB,GAAG,KAAK,IAAmB,EAAE;YACxD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAC9D,qCAAqC,CACtC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,GAAG,CAAC,CAAC;YACvD,MAAM,IAAA,sBAAc,EAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;QAEM,wBAAmB,GAAG,KAAK,IAAmB,EAAE;YACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC1D,MAAM,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAChE,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,iDAAiD,iBAAiB,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC;QAEM,4BAAuB,GAAG,GAAW,EAAE;YAC7C,MAAM,sBAAsB,GAAG,IAAA,iCAAyB,EACtD,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACvC,CAAC;YAEF,MAAM,uBAAuB,GAAG;;sBAEd,sBAAsB;CAC3C,CAAC;YAEE,MAAM,uBAAuB,GAAG;;0BAEV,sBAAsB;CAC/C,CAAC;YAEE,MAAM,aAAa,GACjB,IAAI,CAAC,YAAY,CAAC,eAAe,KAAK,qBAAS,CAAC,UAAU;gBACxD,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,uBAAuB,CAAC;YAE9B,MAAM,OAAO,GACX,aAAa;gBACb;;;;;;;;;;;;;;;;;;CAkBL,CAAC;YACE,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEM,6BAAwB,GAAG,GAAW,EAAE;YAC9C,OAAO,2BAA2B,GAAG,sBAAU,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACrF,CAAC,CAAC;QAlHA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAA,kCAAiB,GAAE,CAAC;IAC7C,CAAC;CAiHF;AAxHD,kEAwHC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport prompts, { PromptObject } from \"prompts\";\nimport fs from \"fs\";\nimport { Extensions, Languages, Messages } from \"./constants\";\nimport { OverridePromptResponse, PackageManager, PlaywrightServiceInitConfig } from \"./types\";\nimport { executeCommand, getFileReferenceForImport } from \"./utils\";\nimport { getPackageManager } from \"./packageManager\";\n\nconst questions: PromptObject[] = [\n {\n type: \"confirm\",\n name: \"canOverride\",\n message: Messages.CAN_OVERRIDE_MESSAGE,\n initial: true,\n },\n {\n type: (prev: boolean) => (prev ? null : \"confirm\"),\n name: \"confirmationForExit\",\n message: Messages.CONFIRMATION_FOR_EXIT_MESSAGE,\n initial: true,\n },\n];\n\nexport class PlaywrightServiceInitialize {\n private _setupConfig: PlaywrightServiceInitConfig;\n private _packageManager: PackageManager;\n\n constructor(setupConfig: PlaywrightServiceInitConfig) {\n this._setupConfig = setupConfig;\n this._packageManager = getPackageManager();\n }\n\n public addServiceSupportToTestSuite = async (): Promise<void> => {\n const canProceedWithServiceInitialization = await this.checkIfServiceConfigCanBeAdded(); // if service config already present, ask user for overwrite permission\n if (!canProceedWithServiceInitialization) return;\n await this.installServicePackage(); // install service packages\n await this.createServiceConfig(); // create service config file\n this.displayAdditionalInformation(); // display additional information\n };\n\n private checkIfServiceConfigCanBeAdded = async (): Promise<boolean> => {\n if (!this.isServiceConfigFileAlreadyPresent()) return true;\n const response = (await prompts.prompt(questions, {\n onCancel: this.promptOnCancel,\n })) as OverridePromptResponse;\n if (response.canOverride) return true;\n if (!response.confirmationForExit) return this.checkIfServiceConfigCanBeAdded();\n\n console.log(`\\n${Messages.SETUP_PROCESS_EXIT_MESSAGE}`);\n return false;\n };\n\n private promptOnCancel = (): never => {\n // eslint-disable-next-line n/no-process-exit\n process.exit(0);\n };\n\n private isServiceConfigFileAlreadyPresent = (): boolean => {\n return fs.existsSync(this.getServiceConfigFileName());\n };\n\n private displayAdditionalInformation = (): void => {\n const runCommandParallelWorkers = this._packageManager.runCommand(\n \"playwright\",\n `test -c ${this.getServiceConfigFileName()} --workers=20`,\n );\n\n console.log(`\\n\\nTo run playwrights tests using Playwright Service\\n`);\n console.log(`\\t${runCommandParallelWorkers}\\n`);\n\n console.log(\"\\nPlaywright Service Portal - https://playwright.microsoft.com/\");\n console.log(\"Getting Started - https://aka.ms/mpt/quickstart\\n\");\n\n console.log(\n \"If you're already using the Microsoft Playwright Testing service, please review the quickstart guide [https://aka.ms/mpt/quickstart] to ensure your tests continue running smoothly.\",\n );\n console.log(\n \"We've introduced changes related to authentication. You'll need to update the new config file to align with these changes.\",\n );\n };\n\n private installServicePackage = async (): Promise<void> => {\n const command = this._packageManager.installDevDependencyCommand(\n \"@azure/microsoft-playwright-testing\",\n );\n console.log(`Installing Service package (${command})`);\n await executeCommand(command);\n };\n\n private createServiceConfig = async (): Promise<void> => {\n const serviceConfigFile = this.getServiceConfigFileName();\n const serviceConfigFileContent = this.getServiceConfigContent();\n await fs.promises.writeFile(serviceConfigFile, serviceConfigFileContent);\n console.log(`Success! Created service configuration file - ${serviceConfigFile}`);\n };\n\n private getServiceConfigContent = (): string => {\n const customerConfigFileName = getFileReferenceForImport(\n this._setupConfig.playwrightConfigFile,\n );\n\n const importCommandTypeScript = `import { defineConfig } from '@playwright/test';\nimport { getServiceConfig, ServiceOS } from '@azure/microsoft-playwright-testing';\nimport config from '${customerConfigFileName}';\n`;\n\n const importCommandJavaScript = `const { defineConfig } = require('@playwright/test');\nconst { getServiceConfig, ServiceOS } = require('@azure/microsoft-playwright-testing');\nconst config = require('${customerConfigFileName}');\n`;\n\n const importCommand =\n this._setupConfig.projectLanguage === Languages.TypeScript\n ? importCommandTypeScript\n : importCommandJavaScript;\n\n const content =\n importCommand +\n `\n/* Learn more about service configuration at https://aka.ms/mpt/config */\nexport default defineConfig(\n config,\n getServiceConfig(config, {\n exposeNetwork: '<loopback>',\n timeout: 30000,\n os: ServiceOS.LINUX,\n }),\n {\n /* \n Playwright Testing service reporter is added by default.\n This will override any reporter options specified in the base playwright config.\n If you are using more reporters, please update your configuration accordingly.\n */\n reporter: [['list'], ['@azure/microsoft-playwright-testing/reporter']],\n }\n);\n`;\n return content;\n };\n\n private getServiceConfigFileName = (): string => {\n return \"playwright.service.config\" + Extensions[this._setupConfig.projectLanguage];\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageManager.d.ts","sourceRoot":"","sources":["../src/packageManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,qBAAa,GAAI,YAAW,cAAc;IACxC,2BAA2B,gBAAiB,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,YAAa,MAAM,QAAQ,MAAM,KAAG,MAAM,CAElD;CACH;AAED,qBAAa,IAAK,YAAW,cAAc;IACzC,OAAO,CAAC,YAAY,CAAkB;;IAMtC,2BAA2B,gBAAiB,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,YAAa,MAAM,QAAQ,MAAM,KAAG,MAAM,CAElD;CACH;AAED,qBAAa,IAAK,YAAW,cAAc;IACzC,2BAA2B,gBAAiB,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,YAAa,MAAM,QAAQ,MAAM,KAAG,MAAM,CAElD;CACH;AAGD,eAAO,MAAM,iBAAiB,QAAO,cAOpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../src/packageManager.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,2BAAgC;AAEhC,qCAA8B;AAC9B,+BAA+B;AAE/B,MAAa,GAAG;IAAhB;QACE,gCAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;YAC5D,OAAO,0BAA0B,WAAW,EAAE,CAAC;QACjD,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;YACrD,OAAO,OAAO,OAAO,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;CAAA;AAPD,kBAOC;AAED,MAAa,IAAI;IAGf;QAFQ,iBAAY,GAAY,KAAK,CAAC;QAMtC,gCAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;YAC5D,OAAO,uBAAuB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/E,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;YACrD,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC;QARA,IAAI,CAAC,YAAY,GAAG,IAAA,eAAU,EAAC,IAAA,cAAO,EAAC,IAAA,aAAG,GAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACxE,CAAC;CAQF;AAbD,oBAaC;AAED,MAAa,IAAI;IAAjB;QACE,gCAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;YAC5D,OAAO,kBAAkB,WAAW,EAAE,CAAC;QACzC,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;YACrD,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;CAAA;AAPD,oBAOC;AAED,8HAA8H;AACvH,MAAM,iBAAiB,GAAG,GAAmB,EAAE;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,IAAI,EAAE,CAAC;QAClD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC;AAPW,QAAA,iBAAiB,qBAO5B","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { existsSync } from \"fs\";\nimport { PackageManager } from \"./types\";\nimport { cwd } from \"process\";\nimport { resolve } from \"path\";\n\nexport class NPM implements PackageManager {\n installDevDependencyCommand = (packageName: string): string => {\n return `npm install --save-dev ${packageName}`;\n };\n runCommand = (command: string, args: string): string => {\n return `npx ${command} ${args}`;\n };\n}\n\nexport class PNPM implements PackageManager {\n private useWorkspace: boolean = false;\n\n constructor() {\n this.useWorkspace = existsSync(resolve(cwd(), \"pnpm-workspace.yaml\"));\n }\n\n installDevDependencyCommand = (packageName: string): string => {\n return `pnpm add --save-dev ${this.useWorkspace ? \"-w \" : \"\"}${packageName}`;\n };\n runCommand = (command: string, args: string): string => {\n return `pnpm ${command} ${args}`;\n };\n}\n\nexport class Yarn implements PackageManager {\n installDevDependencyCommand = (packageName: string): string => {\n return `yarn add --dev ${packageName}`;\n };\n runCommand = (command: string, args: string): string => {\n return `yarn ${command} ${args}`;\n };\n}\n\n// https://stackoverflow.com/questions/68133683/is-there-a-cross-platform-way-to-get-the-name-of-the-parent-process-in-node-js\nexport const getPackageManager = (): PackageManager => {\n if (process.env[\"npm_config_user_agent\"]) {\n const userAgent = process.env[\"npm_config_user_agent\"];\n if (userAgent.includes(\"yarn\")) return new Yarn();\n if (userAgent.includes(\"pnpm\")) return new PNPM();\n }\n return new NPM();\n};\n"]}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AAEnD,MAAM,MAAM,2BAA2B,GAAG;IACxC,eAAe,EAAE,QAAQ,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,2BAA2B,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7D,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACvD,CAAC"}
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport type Language = \"TypeScript\" | \"JavaScript\";\n\nexport type PlaywrightServiceInitConfig = {\n projectLanguage: Language;\n playwrightConfigFile: string;\n};\n\nexport type CLIArguments = {\n config: string;\n};\n\nexport type OverridePromptResponse = {\n canOverride: boolean;\n confirmationForExit: boolean;\n};\n\nexport type PackageManager = {\n installDevDependencyCommand: (packageName: string) => string;\n runCommand: (command: string, args: string) => string;\n};\n"]}
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAGpE,eAAO,MAAM,cAAc,YAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAU9D,CAAC;AAEF,eAAO,MAAM,qCAAqC,QAAO,2BAcxD,CAAC;AAEF,eAAO,MAAM,6CAA6C,yBAClC,MAAM,KAC3B,2BAaF,CAAC;AAEF,eAAO,MAAM,yBAAyB,aAAc,MAAM,KAAG,MAW5D,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,MAUjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,YAcpC,CAAC"}
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { exec } from \"child_process\";\nimport fs from \"fs\";\nimport path, { extname } from \"path\";\nimport { CLIArguments, PlaywrightServiceInitConfig } from \"./types\";\nimport { ErrorMessages, Extensions, Languages } from \"./constants\";\n\nexport const executeCommand = (command: string): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n exec(command, (error, stdout, _) => {\n if (error) {\n reject(error);\n } else {\n resolve(stdout);\n }\n });\n });\n};\n\nexport const getLanguageAndConfigInfoFromDirectory = (): PlaywrightServiceInitConfig => {\n if (fs.existsSync(\"playwright.config.js\")) {\n return {\n playwrightConfigFile: \"playwright.config.js\",\n projectLanguage: Languages.JavaScript,\n };\n } else if (fs.existsSync(\"playwright.config.ts\")) {\n return {\n playwrightConfigFile: \"playwright.config.ts\",\n projectLanguage: Languages.TypeScript,\n };\n } else {\n throw new Error(ErrorMessages.NO_CONFIGURATION_FILE_FOUND);\n }\n};\n\nexport const getLanguageAndConfigInfoFromConfigurationFile = (\n playwrightConfigFile: string,\n): PlaywrightServiceInitConfig => {\n const extension = extname(playwrightConfigFile);\n if (extension === Extensions.TypeScript) {\n return {\n playwrightConfigFile,\n projectLanguage: Languages.TypeScript,\n };\n } else if (extension === Extensions.JavaScript) {\n return {\n playwrightConfigFile,\n projectLanguage: Languages.JavaScript,\n };\n } else throw new Error(ErrorMessages.UNSUPPORTED_CONFIGURATION_FILE);\n};\n\nexport const getFileReferenceForImport = (filePath: string): string => {\n const normalizedPath = filePath.split(path.sep).join(\"/\");\n const parsedPath = path.parse(normalizedPath);\n const withoutExtension = path.posix.join(parsedPath.dir, parsedPath.name);\n if (path.isAbsolute(filePath)) {\n return withoutExtension;\n }\n if (!withoutExtension.startsWith(\"./\") && !withoutExtension.startsWith(\"../\")) {\n return `./${withoutExtension}`;\n }\n return withoutExtension;\n};\n\nexport const showHelpForCLI = (): string => {\n return `\nUsage: index [options]\n\nplaywright configuration file\n\nOptions:\n -c, --config <config>\n -h, --help display help for command\n`;\n};\n\nexport const parseCLIArguments = (): CLIArguments => {\n const args = process.argv.slice(2);\n const cliArguments: CLIArguments = {\n config: \"\",\n };\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"-c\" || args[i] === \"--config\") {\n cliArguments.config = args[i + 1];\n } else if (args[i] === \"-h\" || args[i] === \"--help\") {\n console.log(showHelpForCLI());\n process.exit(0);\n }\n }\n return cliArguments;\n};\n"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|