← back to Charge And Explore

support-form/step3-retype.cjs

36 lines

// Step 3: retype password with real keystrokes so Tesla's form validation
// enables the Sign In button, then submit.
const fs = require('fs');
const { chromium } = require('/Users/macstudio3/uber-address-fix/node_modules/playwright');

const env = fs.readFileSync('/Users/macstudio3/Projects/secrets-manager/.env', 'utf8');
const PASS = (env.match(/^TESLA_PASSWORD=(.*)$/m) || [])[1];

(async () => {
  const browser = await chromium.connectOverCDP('http://127.0.0.1:9223');
  const ctx = browser.contexts()[0];
  const page = ctx.pages().find(p => p.url().includes('auth.tesla.com'));
  if (!page) { console.error('no tesla tab'); process.exit(1); }
  await page.screenshot({ path: __dirname + '/s3a-before.png' });

  const pw = page.locator('input[type="password"]').first();
  await pw.click();
  await pw.press('Meta+a');
  await pw.press('Backspace');
  await pw.pressSequentially(PASS, { delay: 55 });
  await page.waitForTimeout(1000);
  const btn = page.getByRole('button', { name: /sign in/i });
  const enabled = await btn.isEnabled();
  console.log('sign-in enabled:', enabled);
  await page.screenshot({ path: __dirname + '/s3b-typed.png' });
  if (enabled) {
    await btn.click();
    await page.waitForTimeout(8000);
    console.log('after submit URL:', page.url());
    await page.screenshot({ path: __dirname + '/s3c-after-submit.png' });
    const txt = (await page.innerText('body').catch(() => '')).slice(0, 900);
    console.log('BODY:', txt.replace(/\n+/g, ' | '));
  }
  process.exit(0);
})().catch(e => { console.error('ERR', e.message); process.exit(1); });