playwright-ms-auth 0.0.12 → 0.0.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAc9D;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuEf;AAiPD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5E"}
1
+ {"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAc9D;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuEf;AAsRD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5E"}
@@ -1,47 +1,51 @@
1
- import { expect, chromium } from "@playwright/test";
2
- import { CredentialProviderFactory } from "./providers";
3
- import { addCertAuthRoute, waitForCertAuthResponse } from "./certAuth";
4
- import { log, getStorageStatePath, getAuthScreenshotPath, ensureDirExists, isStorageStateValid, } from "./utils";
5
- import { createHash } from "node:crypto";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authenticate = authenticate;
4
+ exports.loadStorageState = loadStorageState;
5
+ const test_1 = require("@playwright/test");
6
+ const providers_1 = require("./providers");
7
+ const certAuth_1 = require("./certAuth");
8
+ const utils_1 = require("./utils");
9
+ const node_crypto_1 = require("node:crypto");
6
10
  const DEFAULT_LOGIN_ENDPOINT = "login.microsoftonline.com";
7
11
  /**
8
12
  * Perform Microsoft Entra authentication and save storage state
9
13
  */
10
- export async function authenticate(config, targetUrl) {
11
- const storagePath = getStorageStatePath(config.email);
14
+ async function authenticate(config, targetUrl) {
15
+ const storagePath = (0, utils_1.getStorageStatePath)(config.email);
12
16
  // Check if existing storage state is still valid
13
- const isValid = await isStorageStateValid(storagePath, config.storageStateExpiration);
17
+ const isValid = await (0, utils_1.isStorageStateValid)(storagePath, config.storageStateExpiration);
14
18
  if (isValid) {
15
- log(`[MsAuth] Storage state for '${config.email}' is still valid, skipping authentication`);
19
+ (0, utils_1.log)(`[MsAuth] Storage state for '${config.email}' is still valid, skipping authentication`);
16
20
  return;
17
21
  }
18
- log(`[MsAuth] Starting authentication for '${config.email}'`);
19
- log(`[MsAuth] Credential provider: ${config.credentialProvider}`);
20
- log(`[MsAuth] Credential type: ${config.credentialType}`);
22
+ (0, utils_1.log)(`[MsAuth] Starting authentication for '${config.email}'`);
23
+ (0, utils_1.log)(`[MsAuth] Credential provider: ${config.credentialProvider}`);
24
+ (0, utils_1.log)(`[MsAuth] Credential type: ${config.credentialType}`);
21
25
  if (config.headless === false) {
22
- log(`[MsAuth] Running in headful mode (visible browser)`);
26
+ (0, utils_1.log)(`[MsAuth] Running in headful mode (visible browser)`);
23
27
  }
24
28
  // Create credential provider and retrieve credential
25
- const provider = CredentialProviderFactory.createProvider(config.credentialProvider, config.providerConfig);
29
+ const provider = providers_1.CredentialProviderFactory.createProvider(config.credentialProvider, config.providerConfig);
26
30
  const credential = await provider.getCredential();
27
31
  // Validate credential type matches configuration
28
32
  if (credential.type !== config.credentialType) {
29
- log(`[MsAuth] ##[warning]Credential type mismatch: expected '${config.credentialType}' but got '${credential.type}'`);
33
+ (0, utils_1.log)(`[MsAuth] ##[warning]Credential type mismatch: expected '${config.credentialType}' but got '${credential.type}'`);
30
34
  }
31
35
  // Launch browser and perform authentication
32
36
  const headlessMode = config.headless !== false;
33
37
  console.log(`[CONSOLE] About to launch browser with headless=${headlessMode} (config.headless=${config.headless})`);
34
- log(`[MsAuth] About to launch browser with headless=${headlessMode} (config.headless=${config.headless})`);
35
- const browser = await chromium.launch({
38
+ (0, utils_1.log)(`[MsAuth] About to launch browser with headless=${headlessMode} (config.headless=${config.headless})`);
39
+ const browser = await test_1.chromium.launch({
36
40
  headless: headlessMode,
37
41
  channel: "msedge", // Use Microsoft Edge for better Windows compatibility
38
42
  args: ["--no-sandbox", "--disable-setuid-sandbox"],
39
43
  });
40
44
  console.log(`[CONSOLE] Browser launched successfully with headless=${headlessMode}`);
41
- log(`[MsAuth] Browser launched successfully`);
45
+ (0, utils_1.log)(`[MsAuth] Browser launched successfully`);
42
46
  try {
43
47
  await performAuthenticationFlow(browser, config, targetUrl, credential, storagePath);
44
- log(`[MsAuth] ##[section]Authentication completed successfully for '${config.email}'`);
48
+ (0, utils_1.log)(`[MsAuth] ##[section]Authentication completed successfully for '${config.email}'`);
45
49
  }
46
50
  finally {
47
51
  await browser.close();
@@ -57,16 +61,16 @@ async function performAuthenticationFlow(browser, config, targetUrl, credential,
57
61
  const page = await context.newPage();
58
62
  try {
59
63
  // Navigate to target URL which will redirect to login
60
- log(`[MsAuth] Navigating to ${targetUrl}`);
64
+ (0, utils_1.log)(`[MsAuth] Navigating to ${targetUrl}`);
61
65
  await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
62
66
  // Verify we're on the Entra login page
63
67
  const loginEndpoint = config.loginEndpoint || DEFAULT_LOGIN_ENDPOINT;
64
68
  const loginUrlPattern = new RegExp(`https:\\/\\/${loginEndpoint.replace(/\./g, "\\.")}\\\/`);
65
- await expect(page, "Expected Entra sign-in page").toHaveURL(loginUrlPattern, { timeout: 30000 });
69
+ await (0, test_1.expect)(page, "Expected Entra sign-in page").toHaveURL(loginUrlPattern, { timeout: 30000 });
66
70
  const actualEndpoint = new URL(page.url()).hostname;
67
- log(`[MsAuth] On Entra login page: ${actualEndpoint}`);
71
+ (0, utils_1.log)(`[MsAuth] On Entra login page: ${actualEndpoint}`);
68
72
  // Enter email address
69
- log(`[MsAuth] Entering email: ${config.email}`);
73
+ (0, utils_1.log)(`[MsAuth] Entering email: ${config.email}`);
70
74
  await page.getByRole("textbox", { name: "email" }).fill(config.email);
71
75
  await page.getByRole("button", { name: "next" }).click();
72
76
  // Handle authentication based on credential type
@@ -79,42 +83,50 @@ async function performAuthenticationFlow(browser, config, targetUrl, credential,
79
83
  // Handle "Stay signed in?" prompt
80
84
  await handleStaySignedIn(page);
81
85
  // Wait for redirect to target URL or any page on the same domain
82
- log(`[MsAuth] Waiting for redirect to target domain`);
86
+ (0, utils_1.log)(`[MsAuth] Waiting for redirect to target domain`);
83
87
  const targetDomain = new URL(targetUrl).origin;
88
+ const targetBaseDomain = new URL(targetUrl).hostname.split('.').slice(-3).join('.'); // e.g., "test.powerapps.com"
84
89
  try {
85
90
  // Try to wait for the exact URL first
86
91
  await page.waitForURL(targetUrl, { timeout: 5000 });
87
92
  }
88
93
  catch {
89
- // If exact URL doesn't match, check if we're on the same domain (authentication succeeded)
94
+ // If exact URL doesn't match, check if we're on the same base domain or at least off the login page
90
95
  const currentUrl = page.url();
91
- if (!currentUrl.startsWith(targetDomain)) {
92
- throw new Error(`Authentication may have failed. Expected to be on ${targetDomain}, but got ${currentUrl}`);
96
+ const currentHostname = new URL(currentUrl).hostname;
97
+ const currentBaseDomain = currentHostname.split('.').slice(-3).join('.');
98
+ // Success if we're on same base domain (e.g., *.test.powerapps.com) or same origin
99
+ const isOnTargetDomain = currentUrl.startsWith(targetDomain) || currentBaseDomain === targetBaseDomain;
100
+ // Also success if we're no longer on the login page
101
+ const loginEndpointHost = config.loginEndpoint || DEFAULT_LOGIN_ENDPOINT;
102
+ const isOffLoginPage = !currentHostname.includes(loginEndpointHost);
103
+ if (!isOnTargetDomain && !isOffLoginPage) {
104
+ throw new Error(`Authentication may have failed. Expected to be on ${targetDomain} or similar, but got ${currentUrl}`);
93
105
  }
94
- log(`[MsAuth] Redirected to ${currentUrl} (authentication successful)`);
106
+ (0, utils_1.log)(`[MsAuth] Redirected to ${currentUrl} (authentication successful)`);
95
107
  }
96
108
  // Give it a bit more time for cookies to settle
97
109
  await page.waitForTimeout(2000);
98
110
  // Save storage state
99
- await ensureDirExists(getStorageStatePath(config.email).replace(/[^/\\\\]+$/, ""));
111
+ await (0, utils_1.ensureDirExists)((0, utils_1.getStorageStatePath)(config.email).replace(/[^/\\\\]+$/, ""));
100
112
  await context.storageState({ path: storagePath });
101
- log(`[MsAuth] Saved storage state to ${storagePath}`);
113
+ (0, utils_1.log)(`[MsAuth] Saved storage state to ${storagePath}`);
102
114
  // Take success screenshot
103
- const screenshotPath = getAuthScreenshotPath(config.email, "success");
104
- await ensureDirExists(screenshotPath.replace(/[^/\\\\]+$/, ""));
115
+ const screenshotPath = (0, utils_1.getAuthScreenshotPath)(config.email, "success");
116
+ await (0, utils_1.ensureDirExists)(screenshotPath.replace(/[^/\\\\]+$/, ""));
105
117
  await page
106
118
  .screenshot({ path: screenshotPath, fullPage: true })
107
119
  .catch(() => { });
108
- log(`[MsAuth] Screenshot saved to ${screenshotPath}`);
120
+ (0, utils_1.log)(`[MsAuth] Screenshot saved to ${screenshotPath}`);
109
121
  }
110
122
  catch (error) {
111
123
  // Take failure screenshot
112
- const screenshotPath = getAuthScreenshotPath(config.email, "failed");
113
- await ensureDirExists(screenshotPath.replace(/[^/\\\\]+$/, ""));
124
+ const screenshotPath = (0, utils_1.getAuthScreenshotPath)(config.email, "failed");
125
+ await (0, utils_1.ensureDirExists)(screenshotPath.replace(/[^/\\\\]+$/, ""));
114
126
  await page
115
127
  .screenshot({ path: screenshotPath, fullPage: true })
116
128
  .catch(() => { });
117
- log(`[MsAuth] ##[error]Authentication failed. Screenshot: ${screenshotPath}`);
129
+ (0, utils_1.log)(`[MsAuth] ##[error]Authentication failed. Screenshot: ${screenshotPath}`);
118
130
  throw error;
119
131
  }
120
132
  finally {
@@ -125,21 +137,21 @@ async function performAuthenticationFlow(browser, config, targetUrl, credential,
125
137
  * Handle certificate-based authentication
126
138
  */
127
139
  async function handleCertificateAuth(page, certificate, endpoint, email) {
128
- log(`[MsAuth] Using certificate authentication`);
140
+ (0, utils_1.log)(`[MsAuth] Using certificate authentication`);
129
141
  // Log certificate fingerprint for debugging
130
- const fingerprint = createHash("sha256")
142
+ const fingerprint = (0, node_crypto_1.createHash)("sha256")
131
143
  .update(new Uint8Array(certificate))
132
144
  .digest("hex");
133
- log(`[MsAuth] Certificate fingerprint: ${fingerprint}`);
134
- log(`[MsAuth] Certificate size: ${certificate.byteLength} bytes`);
145
+ (0, utils_1.log)(`[MsAuth] Certificate fingerprint: ${fingerprint}`);
146
+ (0, utils_1.log)(`[MsAuth] Certificate size: ${certificate.byteLength} bytes`);
135
147
  // Add certificate authentication route
136
- await addCertAuthRoute(page, { pfx: certificate, authEndpoint: endpoint });
148
+ await (0, certAuth_1.addCertAuthRoute)(page, { pfx: certificate, authEndpoint: endpoint });
137
149
  // Handle account type selection if needed
138
150
  const workOrSchoolButton = page.getByRole("button", {
139
151
  name: "Work or school account",
140
152
  });
141
153
  if (await workOrSchoolButton.isVisible({ timeout: 5000 }).catch(() => false)) {
142
- log(`[MsAuth] Selecting 'Work or school account'`);
154
+ (0, utils_1.log)(`[MsAuth] Selecting 'Work or school account'`);
143
155
  await workOrSchoolButton.click();
144
156
  }
145
157
  // Handle certificate selection if needed
@@ -147,19 +159,19 @@ async function handleCertificateAuth(page, certificate, endpoint, email) {
147
159
  .getByRole("link", { name: "certificate" })
148
160
  .or(page.getByRole("button", { name: "certificate" }));
149
161
  if (await certButton.isVisible({ timeout: 5000 }).catch(() => false)) {
150
- log(`[MsAuth] Selecting certificate authentication`);
162
+ (0, utils_1.log)(`[MsAuth] Selecting certificate authentication`);
151
163
  await certButton.click();
152
164
  }
153
165
  // Wait for certificate authentication to complete
154
- log(`[MsAuth] Waiting for certificate authentication response`);
155
- await waitForCertAuthResponse(page, endpoint);
166
+ (0, utils_1.log)(`[MsAuth] Waiting for certificate authentication response`);
167
+ await (0, certAuth_1.waitForCertAuthResponse)(page, endpoint);
156
168
  // Check for certificate validation errors
157
169
  const certFailure = page.getByRole("heading", {
158
170
  name: /Certificate validation failed|We couldn't sign you in with a certificate/i,
159
171
  });
160
172
  if (await certFailure.isVisible({ timeout: 2000 }).catch(() => false)) {
161
173
  const failureText = await certFailure.textContent();
162
- log(`[MsAuth] ##[error]Certificate authentication failed: ${failureText}`);
174
+ (0, utils_1.log)(`[MsAuth] ##[error]Certificate authentication failed: ${failureText}`);
163
175
  // Try to get error details
164
176
  const moreDetails = page.getByRole("button", { name: "More details" });
165
177
  if (await moreDetails.isVisible({ timeout: 1000 }).catch(() => false)) {
@@ -175,25 +187,27 @@ async function handleCertificateAuth(page, certificate, endpoint, email) {
175
187
  .evaluate("navigator.clipboard.readText()")
176
188
  .catch(() => "");
177
189
  if (errorDetails) {
178
- log(`[MsAuth] ##[error]Error details: ${errorDetails}`);
190
+ (0, utils_1.log)(`[MsAuth] ##[error]Error details: ${errorDetails}`);
179
191
  }
180
192
  }
181
193
  }
182
194
  throw new Error(`Certificate authentication failed for ${email}. Check Entra sign-in logs.`);
183
195
  }
184
- log(`[MsAuth] Certificate authentication successful`);
196
+ (0, utils_1.log)(`[MsAuth] Certificate authentication successful`);
197
+ // Wait a bit for any post-auth UI to load
198
+ await page.waitForTimeout(2000);
185
199
  }
186
200
  /**
187
201
  * Handle password-based authentication
188
202
  */
189
203
  async function handlePasswordAuth(page, password, email) {
190
- log(`[MsAuth] Using password authentication`);
204
+ (0, utils_1.log)(`[MsAuth] Using password authentication`);
191
205
  // Wait for password field
192
206
  await page
193
207
  .getByRole("textbox", { name: "password" })
194
208
  .waitFor({ timeout: 10000 });
195
209
  // Enter password
196
- log(`[MsAuth] Entering password`);
210
+ (0, utils_1.log)(`[MsAuth] Entering password`);
197
211
  await page.getByRole("textbox", { name: "password" }).fill(password);
198
212
  await page
199
213
  .getByRole("button", { name: "submit" })
@@ -204,27 +218,47 @@ async function handlePasswordAuth(page, password, email) {
204
218
  const passwordError = page.locator("#passwordError, .has-error");
205
219
  if (await passwordError.isVisible().catch(() => false)) {
206
220
  const errorText = await passwordError.textContent().catch(() => "");
207
- log(`[MsAuth] ##[error]Password authentication failed: ${errorText}`);
221
+ (0, utils_1.log)(`[MsAuth] ##[error]Password authentication failed: ${errorText}`);
208
222
  throw new Error(`Password authentication failed for ${email}. Please verify the password is correct.`);
209
223
  }
210
- log(`[MsAuth] Password authentication successful`);
224
+ (0, utils_1.log)(`[MsAuth] Password authentication successful`);
211
225
  }
212
226
  /**
213
227
  * Handle "Stay signed in?" prompt
214
228
  */
215
229
  async function handleStaySignedIn(page) {
216
- const staySignedIn = page.getByRole("heading", { name: "Stay signed in?" });
217
- if (await staySignedIn.isVisible({ timeout: 5000 }).catch(() => false)) {
218
- log(`[MsAuth] Handling 'Stay signed in?' prompt`);
219
- await page.getByRole("button", { name: "Yes" }).click();
230
+ (0, utils_1.log)(`[MsAuth] Checking for 'Stay signed in?' prompt...`);
231
+ // Try multiple selectors for better compatibility
232
+ const staySignedInHeading = page.getByRole("heading", { name: /stay signed in/i });
233
+ const staySignedInText = page.getByText(/stay signed in/i);
234
+ const yesButton = page.getByRole("button", { name: /^yes$/i });
235
+ const noButton = page.getByRole("button", { name: /^no$/i });
236
+ // Check if the prompt is visible
237
+ const isPromptVisible = await Promise.race([
238
+ staySignedInHeading.isVisible({ timeout: 10000 }).catch(() => false),
239
+ staySignedInText.isVisible({ timeout: 10000 }).catch(() => false),
240
+ ]);
241
+ if (isPromptVisible) {
242
+ (0, utils_1.log)(`[MsAuth] 'Stay signed in?' prompt detected - clicking Yes`);
243
+ // Click Yes button
244
+ await yesButton.click({ timeout: 5000 }).catch(async () => {
245
+ (0, utils_1.log)(`[MsAuth] Failed to click Yes button by role, trying alternative selector`);
246
+ await page.locator('input[type="submit"][value="Yes"]').click();
247
+ });
248
+ (0, utils_1.log)(`[MsAuth] Clicked 'Yes' on stay signed in prompt`);
249
+ // Wait for navigation after clicking
250
+ await page.waitForTimeout(2000);
251
+ }
252
+ else {
253
+ (0, utils_1.log)(`[MsAuth] No 'Stay signed in?' prompt detected`);
220
254
  }
221
255
  }
222
256
  /**
223
257
  * Load existing storage state into a browser context
224
258
  */
225
- export async function loadStorageState(config) {
226
- const storagePath = getStorageStatePath(config.email);
227
- const isValid = await isStorageStateValid(storagePath, config.storageStateExpiration);
259
+ async function loadStorageState(config) {
260
+ const storagePath = (0, utils_1.getStorageStatePath)(config.email);
261
+ const isValid = await (0, utils_1.isStorageStateValid)(storagePath, config.storageStateExpiration);
228
262
  if (!isValid) {
229
263
  throw new Error(`Storage state for '${config.email}' does not exist or has expired. ` +
230
264
  `Please run authentication first.`);
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"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"}
package/lib/certAuth.js CHANGED
@@ -1,14 +1,18 @@
1
- import { Agent, request as https } from "node:https";
2
- import { log } from "./utils";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addCertAuthRoute = addCertAuthRoute;
4
+ exports.waitForCertAuthResponse = waitForCertAuthResponse;
5
+ const node_https_1 = require("node:https");
6
+ const utils_1 = require("./utils");
3
7
  const DEFAULT_AUTH_ENDPOINT = "login.microsoftonline.com";
4
8
  /**
5
9
  * Add certificate authentication route handler to the page
6
10
  */
7
- export async function addCertAuthRoute(page, options) {
11
+ async function addCertAuthRoute(page, options) {
8
12
  const endpoint = options.authEndpoint || DEFAULT_AUTH_ENDPOINT;
9
13
  const uri = getCertAuthGlob(endpoint);
10
14
  const { pfx, passphrase } = options;
11
- log(`[CertAuth] Adding certificate authentication route for endpoint: ${endpoint}`);
15
+ (0, utils_1.log)(`[CertAuth] Adding certificate authentication route for endpoint: ${endpoint}`);
12
16
  await page.route(uri, certAuthHandler({ pfx, passphrase }));
13
17
  }
14
18
  /**
@@ -18,14 +22,14 @@ export async function addCertAuthRoute(page, options) {
18
22
  function certAuthHandler(options) {
19
23
  return async (route, request) => {
20
24
  try {
21
- log(`[CertAuth] Handling certificate authentication request to ${request.url()}`);
25
+ (0, utils_1.log)(`[CertAuth] Handling certificate authentication request to ${request.url()}`);
22
26
  const resp = await doCertAuthPost(request, options);
23
27
  await route.fulfill(resp);
24
- log(`[CertAuth] Certificate authentication request completed with status ${resp.status}`);
28
+ (0, utils_1.log)(`[CertAuth] Certificate authentication request completed with status ${resp.status}`);
25
29
  }
26
30
  catch (e) {
27
31
  const message = e instanceof Error ? e.message : String(e);
28
- log(`[CertAuth] ##[error]Failed to send cert auth request: ${message}`);
32
+ (0, utils_1.log)(`[CertAuth] ##[error]Failed to send cert auth request: ${message}`);
29
33
  await route.abort("failed");
30
34
  }
31
35
  };
@@ -35,8 +39,8 @@ function certAuthHandler(options) {
35
39
  */
36
40
  function doCertAuthPost(request, options) {
37
41
  return new Promise((resolve, reject) => {
38
- const agent = new Agent(options);
39
- const req = https(request.url(), {
42
+ const agent = new node_https_1.Agent(options);
43
+ const req = (0, node_https_1.request)(request.url(), {
40
44
  method: "POST",
41
45
  headers: request.headers(),
42
46
  agent,
@@ -68,7 +72,7 @@ function doCertAuthPost(request, options) {
68
72
  /**
69
73
  * Wait for certificate authentication response
70
74
  */
71
- export function waitForCertAuthResponse(page, endpoint) {
75
+ function waitForCertAuthResponse(page, endpoint) {
72
76
  const authEndpoint = endpoint || DEFAULT_AUTH_ENDPOINT;
73
77
  const glob = getCertAuthGlob(authEndpoint);
74
78
  return page.waitForResponse(glob).then(() => { });
@@ -1 +1 @@
1
- {"version":3,"file":"certAuth.js","sourceRoot":"","sources":["../src/certAuth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"certAuth.js","sourceRoot":"","sources":["../src/certAuth.ts"],"names":[],"mappings":"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"}
package/lib/cli.js CHANGED
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
3
- import { authenticate } from "./authenticate";
4
- import { loadConfigFromEnv, validateConfig } from "./config";
5
- import { EnvVars } from "./types";
6
- import { log } from "./utils";
7
- const program = new Command();
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const authenticate_1 = require("./authenticate");
6
+ const config_1 = require("./config");
7
+ const types_1 = require("./types");
8
+ const utils_1 = require("./utils");
9
+ const program = new commander_1.Command();
8
10
  program
9
11
  .name("ms-auth")
10
12
  .description("Microsoft Entra authentication CLI for Playwright")
@@ -13,66 +15,66 @@ program
13
15
  .command("login")
14
16
  .description("Perform Microsoft Entra authentication and save storage state")
15
17
  .requiredOption("-u, --url <url>", "Target URL to authenticate against")
16
- .option("-e, --email <email>", `User email (or set ${EnvVars.EMAIL})`)
17
- .option("-t, --credential-type <type>", `Credential type: password|certificate (or set ${EnvVars.CREDENTIAL_TYPE})`, "password")
18
- .option("-p, --credential-provider <provider>", `Credential provider: azure-keyvault|local-file|environment|github-secrets (or set ${EnvVars.CREDENTIAL_PROVIDER})`, "azure-keyvault")
19
- .option("--keyvault-endpoint <endpoint>", `Azure KeyVault endpoint (or set ${EnvVars.KEYVAULT_ENDPOINT})`)
20
- .option("--keyvault-secret <secret>", `Azure KeyVault secret name (or set ${EnvVars.KEYVAULT_SECRET_NAME})`)
21
- .option("--local-file <path>", `Local file path for credential (or set ${EnvVars.LOCAL_FILE_PATH})`)
22
- .option("--env-variable <name>", `Environment variable name (or set ${EnvVars.ENV_VARIABLE_NAME})`)
18
+ .option("-e, --email <email>", `User email (or set ${types_1.EnvVars.EMAIL})`)
19
+ .option("-t, --credential-type <type>", `Credential type: password|certificate (or set ${types_1.EnvVars.CREDENTIAL_TYPE})`, "password")
20
+ .option("-p, --credential-provider <provider>", `Credential provider: azure-keyvault|local-file|environment|github-secrets (or set ${types_1.EnvVars.CREDENTIAL_PROVIDER})`, "azure-keyvault")
21
+ .option("--keyvault-endpoint <endpoint>", `Azure KeyVault endpoint (or set ${types_1.EnvVars.KEYVAULT_ENDPOINT})`)
22
+ .option("--keyvault-secret <secret>", `Azure KeyVault secret name (or set ${types_1.EnvVars.KEYVAULT_SECRET_NAME})`)
23
+ .option("--local-file <path>", `Local file path for credential (or set ${types_1.EnvVars.LOCAL_FILE_PATH})`)
24
+ .option("--env-variable <name>", `Environment variable name (or set ${types_1.EnvVars.ENV_VARIABLE_NAME})`)
23
25
  .option("--password <password>", `Password for authentication (not recommended for production, use credential providers instead)`)
24
- .option("--github-repo <repo>", `GitHub repository owner/repo (or set ${EnvVars.GITHUB_REPOSITORY})`)
25
- .option("--github-secret <secret>", `GitHub secret name (or set ${EnvVars.GITHUB_SECRET_NAME})`)
26
- .option("--output-dir <dir>", `Output directory for storage state (or set ${EnvVars.OUTPUT_DIR})`)
26
+ .option("--github-repo <repo>", `GitHub repository owner/repo (or set ${types_1.EnvVars.GITHUB_REPOSITORY})`)
27
+ .option("--github-secret <secret>", `GitHub secret name (or set ${types_1.EnvVars.GITHUB_SECRET_NAME})`)
28
+ .option("--output-dir <dir>", `Output directory for storage state (or set ${types_1.EnvVars.OUTPUT_DIR})`)
27
29
  .option("--headful", "Run browser in headful mode (visible browser window)")
28
30
  .option("--debug", "Enable debug logging")
29
31
  .action(async (options) => {
30
32
  try {
31
33
  // Enable debug logging if requested
32
34
  if (options.debug) {
33
- process.env[EnvVars.SYSTEM_DEBUG] = "true";
35
+ process.env[types_1.EnvVars.SYSTEM_DEBUG] = "true";
34
36
  }
35
- log("[CLI] Starting authentication");
36
- log(`[CLI] Target URL: ${options.url}`);
37
+ (0, utils_1.log)("[CLI] Starting authentication");
38
+ (0, utils_1.log)(`[CLI] Target URL: ${options.url}`);
37
39
  // Set environment variables from CLI options
38
40
  if (options.email)
39
- process.env[EnvVars.EMAIL] = options.email;
41
+ process.env[types_1.EnvVars.EMAIL] = options.email;
40
42
  if (options.credentialType)
41
- process.env[EnvVars.CREDENTIAL_TYPE] = options.credentialType;
43
+ process.env[types_1.EnvVars.CREDENTIAL_TYPE] = options.credentialType;
42
44
  // Handle password option - automatically set provider to environment
43
45
  if (options.password) {
44
- process.env[EnvVars.CREDENTIAL_PROVIDER] = "environment";
45
- process.env[EnvVars.ENV_VARIABLE_NAME] = "MS_AUTH_PASSWORD_INLINE";
46
+ process.env[types_1.EnvVars.CREDENTIAL_PROVIDER] = "environment";
47
+ process.env[types_1.EnvVars.ENV_VARIABLE_NAME] = "MS_AUTH_PASSWORD_INLINE";
46
48
  process.env["MS_AUTH_PASSWORD_INLINE"] = options.password;
47
49
  }
48
50
  else if (options.credentialProvider) {
49
- process.env[EnvVars.CREDENTIAL_PROVIDER] = options.credentialProvider;
51
+ process.env[types_1.EnvVars.CREDENTIAL_PROVIDER] = options.credentialProvider;
50
52
  }
51
53
  if (options.keyvaultEndpoint)
52
- process.env[EnvVars.KEYVAULT_ENDPOINT] = options.keyvaultEndpoint;
54
+ process.env[types_1.EnvVars.KEYVAULT_ENDPOINT] = options.keyvaultEndpoint;
53
55
  if (options.keyvaultSecret)
54
- process.env[EnvVars.KEYVAULT_SECRET_NAME] = options.keyvaultSecret;
56
+ process.env[types_1.EnvVars.KEYVAULT_SECRET_NAME] = options.keyvaultSecret;
55
57
  if (options.localFile)
56
- process.env[EnvVars.LOCAL_FILE_PATH] = options.localFile;
58
+ process.env[types_1.EnvVars.LOCAL_FILE_PATH] = options.localFile;
57
59
  if (options.envVariable)
58
- process.env[EnvVars.ENV_VARIABLE_NAME] = options.envVariable;
60
+ process.env[types_1.EnvVars.ENV_VARIABLE_NAME] = options.envVariable;
59
61
  if (options.githubRepo)
60
- process.env[EnvVars.GITHUB_REPOSITORY] = options.githubRepo;
62
+ process.env[types_1.EnvVars.GITHUB_REPOSITORY] = options.githubRepo;
61
63
  if (options.githubSecret)
62
- process.env[EnvVars.GITHUB_SECRET_NAME] = options.githubSecret;
64
+ process.env[types_1.EnvVars.GITHUB_SECRET_NAME] = options.githubSecret;
63
65
  if (options.outputDir)
64
- process.env[EnvVars.OUTPUT_DIR] = options.outputDir;
66
+ process.env[types_1.EnvVars.OUTPUT_DIR] = options.outputDir;
65
67
  // Load configuration from environment
66
- const config = loadConfigFromEnv();
68
+ const config = (0, config_1.loadConfigFromEnv)();
67
69
  // Set headless mode based on --headful flag
68
70
  config.headless = !options.headful; // If --headful is set, headless = false
69
- validateConfig(config);
70
- log(`[CLI] Email: ${config.email}`);
71
- log(`[CLI] Credential type: ${config.credentialType}`);
72
- log(`[CLI] Credential provider: ${config.credentialProvider}`);
73
- log(`[CLI] Browser mode: ${config.headless ? "headless" : "headful"}`);
71
+ (0, config_1.validateConfig)(config);
72
+ (0, utils_1.log)(`[CLI] Email: ${config.email}`);
73
+ (0, utils_1.log)(`[CLI] Credential type: ${config.credentialType}`);
74
+ (0, utils_1.log)(`[CLI] Credential provider: ${config.credentialProvider}`);
75
+ (0, utils_1.log)(`[CLI] Browser mode: ${config.headless ? "headless" : "headful"}`);
74
76
  // Perform authentication
75
- await authenticate(config, options.url);
77
+ await (0, authenticate_1.authenticate)(config, options.url);
76
78
  console.log("✅ Authentication successful!");
77
79
  process.exit(0);
78
80
  }
@@ -91,31 +93,31 @@ program
91
93
  .action(() => {
92
94
  console.log("Supported Environment Variables:\n");
93
95
  console.log("Core Configuration:");
94
- console.log(` ${EnvVars.EMAIL} - User email address`);
95
- console.log(` ${EnvVars.CREDENTIAL_TYPE} - Credential type (password|certificate)`);
96
- console.log(` ${EnvVars.CREDENTIAL_PROVIDER} - Provider type (azure-keyvault|local-file|environment|github-secrets)`);
97
- console.log(` ${EnvVars.OUTPUT_DIR} - Output directory for storage state`);
98
- console.log(` ${EnvVars.LOGIN_ENDPOINT} - Entra login endpoint (default: login.microsoftonline.com)`);
99
- console.log(` ${EnvVars.STORAGE_STATE_EXPIRATION} - Hours until storage state expires (default: 24)`);
96
+ console.log(` ${types_1.EnvVars.EMAIL} - User email address`);
97
+ console.log(` ${types_1.EnvVars.CREDENTIAL_TYPE} - Credential type (password|certificate)`);
98
+ console.log(` ${types_1.EnvVars.CREDENTIAL_PROVIDER} - Provider type (azure-keyvault|local-file|environment|github-secrets)`);
99
+ console.log(` ${types_1.EnvVars.OUTPUT_DIR} - Output directory for storage state`);
100
+ console.log(` ${types_1.EnvVars.LOGIN_ENDPOINT} - Entra login endpoint (default: login.microsoftonline.com)`);
101
+ console.log(` ${types_1.EnvVars.STORAGE_STATE_EXPIRATION} - Hours until storage state expires (default: 24)`);
100
102
  console.log();
101
103
  console.log("Azure KeyVault Provider:");
102
- console.log(` ${EnvVars.KEYVAULT_ENDPOINT} - KeyVault endpoint URL`);
103
- console.log(` ${EnvVars.KEYVAULT_SECRET_NAME}- Secret name in KeyVault`);
104
+ console.log(` ${types_1.EnvVars.KEYVAULT_ENDPOINT} - KeyVault endpoint URL`);
105
+ console.log(` ${types_1.EnvVars.KEYVAULT_SECRET_NAME}- Secret name in KeyVault`);
104
106
  console.log();
105
107
  console.log("Local File Provider:");
106
- console.log(` ${EnvVars.LOCAL_FILE_PATH} - Path to credential file`);
107
- console.log(` ${EnvVars.CERTIFICATE_PASSWORD}- Password for encrypted certificate`);
108
+ console.log(` ${types_1.EnvVars.LOCAL_FILE_PATH} - Path to credential file`);
109
+ console.log(` ${types_1.EnvVars.CERTIFICATE_PASSWORD}- Password for encrypted certificate`);
108
110
  console.log();
109
111
  console.log("Environment Variable Provider:");
110
- console.log(` ${EnvVars.ENV_VARIABLE_NAME} - Name of environment variable containing credential`);
112
+ console.log(` ${types_1.EnvVars.ENV_VARIABLE_NAME} - Name of environment variable containing credential`);
111
113
  console.log();
112
114
  console.log("GitHub Secrets Provider:");
113
- console.log(` ${EnvVars.GITHUB_REPOSITORY} - GitHub repository (owner/repo)`);
114
- console.log(` ${EnvVars.GITHUB_SECRET_NAME} - GitHub secret name`);
115
- console.log(` ${EnvVars.GITHUB_TOKEN} - GitHub token (optional)`);
115
+ console.log(` ${types_1.EnvVars.GITHUB_REPOSITORY} - GitHub repository (owner/repo)`);
116
+ console.log(` ${types_1.EnvVars.GITHUB_SECRET_NAME} - GitHub secret name`);
117
+ console.log(` ${types_1.EnvVars.GITHUB_TOKEN} - GitHub token (optional)`);
116
118
  console.log();
117
119
  console.log("Debug:");
118
- console.log(` ${EnvVars.SYSTEM_DEBUG} - Enable debug logging (true|false)`);
120
+ console.log(` ${types_1.EnvVars.SYSTEM_DEBUG} - Enable debug logging (true|false)`);
119
121
  });
120
122
  program.parse();
121
123
  //# sourceMappingURL=cli.js.map