Spaces:
Sleeping
Sleeping
| import { chromium } from 'playwright'; | |
| export async function runLogin () { | |
| let browser; | |
| try { | |
| browser = await chromium.launch({ | |
| args: ['--no-sandbox', '--ignore-certificate-errors'], | |
| }); | |
| const ctx = await browser.newContext({ ignoreHTTPSErrors: true }); | |
| const page = await ctx.newPage(); | |
| await page.goto(process.env.N8N_URL, { waitUntil: 'networkidle', timeout: 60000 }); | |
| /* sign-in if form present */ | |
| const signIn = page.locator('[data-test-id="signin-form"]'); | |
| if (await signIn.count()) { | |
| await page | |
| .locator('input[name="emailOrLdapLoginId"], input[name="email"]') | |
| .first().fill(process.env.N8N_EMAIL || ''); | |
| await page.locator('input[name="password"]').first() | |
| .fill(process.env.N8N_PASSWORD || ''); | |
| await page.getByRole('button', { name: /sign in/i }).click(); | |
| await page.locator('text=Overview').waitFor({ timeout: 60000 }); | |
| } | |
| /* take screenshot → Buffer */ | |
| const png = await page.screenshot({ type: 'png', fullPage: true }); | |
| console.log('✅ Playwright finished; needSignIn =', needSignIn); | |
| return { ok: true, png }; // return raw Buffer | |
| } catch (err) { | |
| return { ok: false, error: err.message }; | |
| } finally { | |
| if (browser) await browser.close(); | |
| } | |
| } | |