@azure/create-microsoft-playwright-testing 1.0.0-beta.1 → 1.0.0-beta.3

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.
Files changed (77) hide show
  1. package/LICENSE +4 -4
  2. package/dist/commonjs/bin/init.d.ts.map +1 -0
  3. package/dist/commonjs/bin/init.js +27 -0
  4. package/dist/commonjs/bin/init.js.map +1 -0
  5. package/dist/{constants.d.ts → commonjs/constants.d.ts} +1 -1
  6. package/dist/commonjs/constants.d.ts.map +1 -0
  7. package/dist/commonjs/constants.js.map +1 -0
  8. package/dist/{index.d.ts.map → commonjs/index.d.ts.map} +1 -1
  9. package/dist/{index.js → commonjs/index.js} +4 -5
  10. package/dist/commonjs/index.js.map +1 -0
  11. package/dist/{initialize.d.ts → commonjs/initialize.d.ts} +1 -1
  12. package/dist/commonjs/initialize.d.ts.map +1 -0
  13. package/dist/commonjs/initialize.js +113 -0
  14. package/dist/commonjs/initialize.js.map +1 -0
  15. package/dist/commonjs/package.json +3 -0
  16. package/dist/{packageManager.d.ts → commonjs/packageManager.d.ts} +1 -1
  17. package/dist/commonjs/packageManager.d.ts.map +1 -0
  18. package/dist/commonjs/packageManager.js +52 -0
  19. package/dist/commonjs/packageManager.js.map +1 -0
  20. package/dist/commonjs/types.d.ts.map +1 -0
  21. package/dist/commonjs/types.js.map +1 -0
  22. package/dist/{utils.d.ts → commonjs/utils.d.ts} +1 -1
  23. package/dist/commonjs/utils.d.ts.map +1 -0
  24. package/dist/{utils.js → commonjs/utils.js} +20 -20
  25. package/dist/commonjs/utils.js.map +1 -0
  26. package/dist/esm/bin/init.d.ts +2 -0
  27. package/dist/esm/bin/init.d.ts.map +1 -0
  28. package/dist/esm/bin/init.js +23 -0
  29. package/dist/esm/bin/init.js.map +1 -0
  30. package/dist/esm/constants.d.ts +19 -0
  31. package/dist/esm/constants.d.ts.map +1 -0
  32. package/dist/esm/constants.js +20 -0
  33. package/dist/esm/constants.js.map +1 -0
  34. package/dist/esm/index.d.ts +3 -0
  35. package/dist/esm/index.d.ts.map +1 -0
  36. package/dist/esm/index.js +11 -0
  37. package/dist/esm/index.js.map +1 -0
  38. package/dist/esm/initialize.d.ts +16 -0
  39. package/dist/esm/initialize.d.ts.map +1 -0
  40. package/dist/esm/initialize.js +108 -0
  41. package/dist/esm/initialize.js.map +1 -0
  42. package/dist/esm/package.json +3 -0
  43. package/dist/esm/packageManager.d.ts +17 -0
  44. package/dist/esm/packageManager.d.ts.map +1 -0
  45. package/dist/esm/packageManager.js +45 -0
  46. package/dist/esm/packageManager.js.map +1 -0
  47. package/dist/esm/types.d.ts +17 -0
  48. package/dist/esm/types.d.ts.map +1 -0
  49. package/dist/esm/types.js +4 -0
  50. package/dist/esm/types.js.map +1 -0
  51. package/dist/esm/utils.d.ts +8 -0
  52. package/dist/esm/utils.d.ts.map +1 -0
  53. package/dist/esm/utils.js +92 -0
  54. package/dist/esm/utils.js.map +1 -0
  55. package/package.json +61 -45
  56. package/CHANGELOG.md +0 -8
  57. package/dist/bin/init.d.ts.map +0 -1
  58. package/dist/bin/init.js +0 -23
  59. package/dist/bin/init.js.map +0 -1
  60. package/dist/constants.d.ts.map +0 -1
  61. package/dist/constants.js.map +0 -1
  62. package/dist/index.js.map +0 -1
  63. package/dist/initialize.d.ts.map +0 -1
  64. package/dist/initialize.js +0 -119
  65. package/dist/initialize.js.map +0 -1
  66. package/dist/packageManager.d.ts.map +0 -1
  67. package/dist/packageManager.js +0 -56
  68. package/dist/packageManager.js.map +0 -1
  69. package/dist/types.d.ts.map +0 -1
  70. package/dist/types.js.map +0 -1
  71. package/dist/utils.d.ts.map +0 -1
  72. package/dist/utils.js.map +0 -1
  73. /package/dist/{bin → commonjs/bin}/init.d.ts +0 -0
  74. /package/dist/{constants.js → commonjs/constants.js} +0 -0
  75. /package/dist/{index.d.ts → commonjs/index.d.ts} +0 -0
  76. /package/dist/{types.d.ts → commonjs/types.d.ts} +0 -0
  77. /package/dist/{types.js → commonjs/types.js} +0 -0
@@ -0,0 +1,108 @@
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
+ _setupConfig;
24
+ _packageManager;
25
+ constructor(setupConfig) {
26
+ this._setupConfig = setupConfig;
27
+ this._packageManager = getPackageManager();
28
+ }
29
+ addServiceSupportToTestSuite = async () => {
30
+ const canProceedWithServiceInitialization = await this.checkIfServiceConfigCanBeAdded(); // if service config already present, ask user for overwrite permission
31
+ if (!canProceedWithServiceInitialization)
32
+ return;
33
+ await this.installServicePackage(); // install service packages
34
+ await this.createServiceConfig(); // create service config file
35
+ this.displayAdditionalInformation(); // display additional information
36
+ };
37
+ checkIfServiceConfigCanBeAdded = async () => {
38
+ if (!this.isServiceConfigFileAlreadyPresent())
39
+ return true;
40
+ const response = (await prompts.prompt(questions, {
41
+ onCancel: this.promptOnCancel,
42
+ }));
43
+ if (response.canOverride)
44
+ return true;
45
+ if (!response.confirmationForExit)
46
+ return this.checkIfServiceConfigCanBeAdded();
47
+ console.log(`\n${Messages.SETUP_PROCESS_EXIT_MESSAGE}`);
48
+ return false;
49
+ };
50
+ promptOnCancel = () => {
51
+ process.exit(0);
52
+ };
53
+ isServiceConfigFileAlreadyPresent = () => {
54
+ return fs.existsSync(this.getServiceConfigFileName());
55
+ };
56
+ displayAdditionalInformation = () => {
57
+ const runCommandParallelWorkers = this._packageManager.runCommand("playwright", `test -c ${this.getServiceConfigFileName()} --workers=20`);
58
+ console.log(`\n\nTo run playwrights tests using Playwright Service\n`);
59
+ console.log(`\t${runCommandParallelWorkers}\n`);
60
+ console.log("\nPlaywright Service Portal - https://playwright.microsoft.com/");
61
+ console.log("Getting Started - https://aka.ms/mpt/quickstart\n");
62
+ 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.");
63
+ console.log("We've introduced changes related to authentication. You'll need to update the new config file to align with these changes.");
64
+ };
65
+ installServicePackage = async () => {
66
+ const command = this._packageManager.installDevDependencyCommand("@azure/microsoft-playwright-testing");
67
+ console.log(`Installing Service package (${command})`);
68
+ await executeCommand(command);
69
+ };
70
+ createServiceConfig = async () => {
71
+ const serviceConfigFile = this.getServiceConfigFileName();
72
+ const serviceConfigFileContent = this.getServiceConfigContent();
73
+ await fs.promises.writeFile(serviceConfigFile, serviceConfigFileContent);
74
+ console.log(`Success! Created service configuration file - ${serviceConfigFile}`);
75
+ };
76
+ getServiceConfigContent = () => {
77
+ const customerConfigFileName = getFileReferenceForImport(this._setupConfig.playwrightConfigFile);
78
+ const importCommandTypeScript = `import { defineConfig } from '@playwright/test';
79
+ import { getServiceConfig, ServiceOS } from '@azure/microsoft-playwright-testing';
80
+ import config from '${customerConfigFileName}';
81
+ `;
82
+ const importCommandJavaScript = `const { defineConfig } = require('@playwright/test');
83
+ const { getServiceConfig, ServiceOS } = require('@azure/microsoft-playwright-testing');
84
+ const config = require('${customerConfigFileName}');
85
+ `;
86
+ const importCommand = this._setupConfig.projectLanguage === Languages.TypeScript
87
+ ? importCommandTypeScript
88
+ : importCommandJavaScript;
89
+ const content = importCommand +
90
+ `
91
+ /* Learn more about service configuration at https://aka.ms/mpt/config */
92
+ export default defineConfig(
93
+ config,
94
+ getServiceConfig(config, {
95
+ exposeNetwork: '<loopback>',
96
+ timeout: 30000,
97
+ os: ServiceOS.LINUX,
98
+ }),
99
+
100
+ );
101
+ `;
102
+ return content;
103
+ };
104
+ getServiceConfigFileName = () => {
105
+ return "playwright.service.config" + Extensions[this._setupConfig.projectLanguage];
106
+ };
107
+ }
108
+ //# 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 }),\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,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -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,GAAI,aAAa,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,CAElD;CACH;AAED,qBAAa,IAAK,YAAW,cAAc;IACzC,OAAO,CAAC,YAAY,CAAkB;;IAMtC,2BAA2B,GAAI,aAAa,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,CAElD;CACH;AAED,qBAAa,IAAK,YAAW,cAAc;IACzC,2BAA2B,GAAI,aAAa,MAAM,KAAG,MAAM,CAEzD;IACF,UAAU,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,CAElD;CACH;AAGD,eAAO,MAAM,iBAAiB,QAAO,cAOpC,CAAC"}
@@ -0,0 +1,45 @@
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
+ installDevDependencyCommand = (packageName) => {
8
+ return `npm install --save-dev ${packageName}`;
9
+ };
10
+ runCommand = (command, args) => {
11
+ return `npx ${command} ${args}`;
12
+ };
13
+ }
14
+ export class PNPM {
15
+ useWorkspace = false;
16
+ constructor() {
17
+ this.useWorkspace = existsSync(resolve(cwd(), "pnpm-workspace.yaml"));
18
+ }
19
+ installDevDependencyCommand = (packageName) => {
20
+ return `pnpm add --save-dev ${this.useWorkspace ? "-w " : ""}${packageName}`;
21
+ };
22
+ runCommand = (command, args) => {
23
+ return `pnpm ${command} ${args}`;
24
+ };
25
+ }
26
+ export class Yarn {
27
+ installDevDependencyCommand = (packageName) => {
28
+ return `yarn add --dev ${packageName}`;
29
+ };
30
+ runCommand = (command, args) => {
31
+ return `yarn ${command} ${args}`;
32
+ };
33
+ }
34
+ // https://stackoverflow.com/questions/68133683/is-there-a-cross-platform-way-to-get-the-name-of-the-parent-process-in-node-js
35
+ export const getPackageManager = () => {
36
+ if (process.env["npm_config_user_agent"]) {
37
+ const userAgent = process.env["npm_config_user_agent"];
38
+ if (userAgent.includes("yarn"))
39
+ return new Yarn();
40
+ if (userAgent.includes("pnpm"))
41
+ return new PNPM();
42
+ }
43
+ return new NPM();
44
+ };
45
+ //# 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;IACd,2BAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;QAC5D,OAAO,0BAA0B,WAAW,EAAE,CAAC;IACjD,CAAC,CAAC;IACF,UAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;QACrD,OAAO,OAAO,OAAO,IAAI,IAAI,EAAE,CAAC;IAClC,CAAC,CAAC;CACH;AAED,MAAM,OAAO,IAAI;IACP,YAAY,GAAY,KAAK,CAAC;IAEtC;QACE,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,2BAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;QAC5D,OAAO,uBAAuB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/E,CAAC,CAAC;IACF,UAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;QACrD,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC,CAAC;CACH;AAED,MAAM,OAAO,IAAI;IACf,2BAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE;QAC5D,OAAO,kBAAkB,WAAW,EAAE,CAAC;IACzC,CAAC,CAAC;IACF,UAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAU,EAAE;QACrD,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC,CAAC;CACH;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,4 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -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,GAAI,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAU9D,CAAC;AAEF,eAAO,MAAM,qCAAqC,QAAO,2BAcxD,CAAC;AAEF,eAAO,MAAM,6CAA6C,GACxD,sBAAsB,MAAM,KAC3B,2BAaF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,UAAU,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.1",
3
+ "version": "1.0.0-beta.3",
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",
@@ -19,62 +19,36 @@
19
19
  "url": "https://github.com/Azure/azure-sdk-for-js/issues"
20
20
  },
21
21
  "engines": {
22
- "node": ">=18.0.0"
22
+ "node": ">=20.0.0"
23
23
  },
24
24
  "sideEffects": false,
25
- "main": "dist/index.js",
26
- "module": "dist/index.js",
27
- "types": "dist/index.d.ts",
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
- "dist",
33
+ "dist/",
33
34
  "README.md",
34
- "LICENSE",
35
- "CHANGELOG.md"
35
+ "LICENSE"
36
36
  ],
37
- "scripts": {
38
- "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
39
- "build": "npm run clean && tsc -p . && dev-tool run bundle && npm run extract-api",
40
- "build:test": "tsc -p . && dev-tool run bundle",
41
- "build:samples": "echo obsolete",
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/",
44
- "execute:samples": "echo skipped",
45
- "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
46
- "integration-test:browser": "echo skipped",
47
- "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
- "lint": "eslint package.json CHANGELOG.md README.md src",
51
- "pack": "npm pack 2>&1",
52
- "test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
53
- "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
- "unit-test": "npm run unit-test:node && npm run unit-test:browser",
58
- "extract-api": "echo skipped"
59
- },
60
37
  "dependencies": {
61
38
  "prompts": "^2.4.2",
62
- "tslib": "^2.6.0"
39
+ "tslib": "^2.8.1"
63
40
  },
64
41
  "devDependencies": {
65
- "@types/node": "^20.12.12",
42
+ "@azure/logger": "^1.1.4",
43
+ "@types/node": "^20.19.0",
66
44
  "@types/prompts": "^2.4.9",
67
- "@azure/dev-tool": "^1.0.0",
68
- "rimraf": "^5.0.5",
69
- "typescript": "^5.5.3",
45
+ "@vitest/coverage-istanbul": "^3.2.3",
46
+ "eslint": "^9.33.0",
47
+ "typescript": "~5.8.3",
48
+ "vitest": "^3.2.3",
49
+ "@azure-tools/test-utils-vitest": "^1.0.0",
70
50
  "@azure/eslint-plugin-azure-sdk": "^3.0.0",
71
- "eslint": "^9.9.0",
72
- "sinon": "^17.0.0",
73
- "@types/sinon": "^17.0.0",
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"
51
+ "@azure/dev-tool": "^1.0.0"
78
52
  },
79
53
  "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
80
54
  "//sampleConfiguration": {
@@ -85,5 +59,47 @@
85
59
  "requiredResources": {
86
60
  "Microsoft Playwright Testing workspace": "https://learn.microsoft.com/azure/playwright-testing/"
87
61
  }
62
+ },
63
+ "tshy": {
64
+ "project": "../../../tsconfig.src.build.json",
65
+ "exports": {
66
+ "./package.json": "./package.json",
67
+ ".": "./src/index.ts"
68
+ },
69
+ "dialects": [
70
+ "esm",
71
+ "commonjs"
72
+ ],
73
+ "selfLink": false
74
+ },
75
+ "exports": {
76
+ "./package.json": "./package.json",
77
+ ".": {
78
+ "import": {
79
+ "types": "./dist/esm/index.d.ts",
80
+ "default": "./dist/esm/index.js"
81
+ },
82
+ "require": {
83
+ "types": "./dist/commonjs/index.d.ts",
84
+ "default": "./dist/commonjs/index.js"
85
+ }
86
+ }
87
+ },
88
+ "scripts": {
89
+ "build": "npm run clean && dev-tool run build-package",
90
+ "build:samples": "echo Skipped.",
91
+ "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
92
+ "clean": "dev-tool run vendored rimraf --glob dist *.log dist-test temp types *.tgz *.xml samples/**/test-results/",
93
+ "execute:samples": "echo skipped",
94
+ "extract-api": "echo skipped",
95
+ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
96
+ "lint": "eslint package.json src",
97
+ "lint:fix": "eslint package.json src --fix --fix-type [problem,suggestion]",
98
+ "pack": "pnpm pack 2>&1",
99
+ "test": "npm run test:node && npm run test:browser",
100
+ "test:browser": "echo skipped",
101
+ "test:node": "dev-tool run test:vitest --no-test-proxy",
102
+ "test:node:esm": "dev-tool run test:vitest --esm --no-test-proxy",
103
+ "update-snippets": "dev-tool run update-snippets"
88
104
  }
89
- }
105
+ }
package/CHANGELOG.md DELETED
@@ -1,8 +0,0 @@
1
- # Release History
2
-
3
- ## 1.0.0-beta.1 (2024-09-09)
4
-
5
- ### Features Added
6
-
7
- - Added authentication using Entra ID for the service.
8
- - Added reporting capabilities for the service. You can now publish the reports and artifacts generated by Playwright OSS to the service.
@@ -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 DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT License.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.init = void 0;
6
- const initialize_1 = require("../initialize");
7
- const utils_1 = require("../utils");
8
- const init = async () => {
9
- const options = (0, utils_1.parseCLIArguments)();
10
- const { config: playwrightConfigFile } = options;
11
- let playwrightServiceInitConfig;
12
- if (playwrightConfigFile) {
13
- playwrightServiceInitConfig = Object.assign({}, (0, utils_1.getLanguageAndConfigInfoFromConfigurationFile)(playwrightConfigFile));
14
- }
15
- else {
16
- playwrightServiceInitConfig = Object.assign({}, (0, utils_1.getLanguageAndConfigInfoFromDirectory)());
17
- }
18
- console.log("");
19
- const playwrightServiceInitialize = new initialize_1.PlaywrightServiceInitialize(playwrightServiceInitConfig);
20
- await playwrightServiceInitialize.addServiceSupportToTestSuite();
21
- };
22
- exports.init = init;
23
- //# sourceMappingURL=init.js.map
@@ -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"]}
@@ -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"}
@@ -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;;"}
@@ -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"}