chore: make autumn checkout more reliable
This commit is contained in:
@@ -9,7 +9,7 @@ export const USE_KERNEL = !!process.env.USE_KERNEL_BROWSER;
|
||||
// export const USE_KERNEL = false;
|
||||
|
||||
/** Run browsers in headless mode (set false to watch the browser) */
|
||||
export const HEADLESS = false;
|
||||
export const HEADLESS = true;
|
||||
|
||||
/** Path to local Chromium/Chrome executable (auto-detected if not set in env) */
|
||||
export const CHROMIUM_PATH =
|
||||
|
||||
@@ -29,14 +29,22 @@ export const invoiceCheckout = async ({
|
||||
let paymentFrame = null;
|
||||
|
||||
// Try to find the iframe via #payment-element first (embedded Payment Element)
|
||||
// Use a specific selector to avoid matching the bank search results iframe
|
||||
try {
|
||||
await page.waitForSelector("#payment-element iframe", { timeout: 10000 });
|
||||
paymentFrame = page.frameLocator("#payment-element iframe");
|
||||
await page.waitForSelector('#payment-element iframe[title="Secure payment input frame"]', { timeout: 10000 });
|
||||
paymentFrame = page.frameLocator('#payment-element iframe[title="Secure payment input frame"]');
|
||||
console.log("[invoiceCheckout] Found #payment-element iframe");
|
||||
} catch {
|
||||
console.log(
|
||||
"[invoiceCheckout] No #payment-element iframe, searching all frames...",
|
||||
);
|
||||
// Fallback: try first iframe in #payment-element
|
||||
try {
|
||||
await page.waitForSelector("#payment-element iframe", { timeout: 5000 });
|
||||
paymentFrame = page.frameLocator("#payment-element iframe").first();
|
||||
console.log("[invoiceCheckout] Found #payment-element iframe (first)");
|
||||
} catch {
|
||||
console.log(
|
||||
"[invoiceCheckout] No #payment-element iframe, searching all frames...",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: search all frames for one containing Stripe payment fields
|
||||
@@ -97,13 +105,22 @@ export const invoiceCheckout = async ({
|
||||
|
||||
// Now try to find the payment frame again
|
||||
try {
|
||||
await page.waitForSelector("#payment-element iframe", { timeout: 10000 });
|
||||
paymentFrame = page.frameLocator("#payment-element iframe");
|
||||
await page.waitForSelector('#payment-element iframe[title="Secure payment input frame"]', { timeout: 10000 });
|
||||
paymentFrame = page.frameLocator('#payment-element iframe[title="Secure payment input frame"]');
|
||||
console.log(
|
||||
"[invoiceCheckout] Found #payment-element iframe after card click",
|
||||
);
|
||||
} catch {
|
||||
// Still try frame search
|
||||
// Fallback: first iframe
|
||||
try {
|
||||
await page.waitForSelector("#payment-element iframe", { timeout: 5000 });
|
||||
paymentFrame = page.frameLocator("#payment-element iframe").first();
|
||||
console.log(
|
||||
"[invoiceCheckout] Found #payment-element iframe after card click (first)",
|
||||
);
|
||||
} catch {
|
||||
// Still try frame search
|
||||
}
|
||||
}
|
||||
|
||||
if (!paymentFrame) {
|
||||
|
||||
Reference in New Issue
Block a user