Skip to content

Can't parsing Cookies #704

@kevariable

Description

@kevariable

Hi, i have small test with Jest, Puppeteer the following lightpanda instance:

➜ ./lightpanda serve
info(telemetry): telemetry enabled
info(server): accepting new conn...
info(server): client connected
warning(cookie): Couldn't parse cookie 'XSRF-TOKEN=eyJpdiI6IlhxbWdmRWNqa0lQUzZHVEUyaEFiVUE9PSIsInZhbHVlIjoidFB5eVcreGtBejJRSVU0SHZsY2IrNmp5djVqajM0VncxekdkY3p3d3BzOGY1RXBmenRManZIN1ZqRGFtR3hOVHZ5NzFscUZKUGs3Y3kvVXhGeDV4cmFEcUw0Znh1OXZydnBDMjZyb3JWUXRFTDJOS3lweTVCcU5hZEVjcWo2ODAiLCJtYWMiOiJhMDY3YzcyZjQ2N2ExZTEzZTVmNzFmYTI4MTllMTdkNDMwZDY3OWZhZjYyNTdiYWNiZTA5NjJlMTkyNjVkNGMwIiwidGFnIjoiIn0%3D; expires=Tue, 27 May 2025 10:23:10 GMT; Max-Age=7200; path=/; domain=localhost; samesite=lax': error.InvalidDomain

warning(cookie): Couldn't parse cookie 'app_session=eyJpdiI6IjlLUSsrdHlNbGVFTVh2b0E4aytLR2c9PSIsInZhbHVlIjoiUjhQNjFTNTFjQjlSeFBJUTMzWlVZWkJ4K3owQWRQOWphWEhYNFBLWGU5ZkVJTkZGR0JhT3NKWkFKdERseWpyZVVIQ2NYVmtzWUR5NDh1a2hFaCtmRHdiS2tSY0V2VURQWjduV010enJTYkh1MkNlc01rd2NqN3BiSmU1THdlVzMiLCJtYWMiOiJiZDEyZTAzNGYyMThjZjBlYmU2MzNlNDAwMTM1NjI3NzQyNWY3OGFjYzAwZDc3NTFkYzgxMmMxYzVmZjk1ODE1IiwidGFnIjoiIn0%3D; expires=Tue, 27 May 2025 10:23:10 GMT; Max-Age=7200; path=/; domain=localhost; httponly; samesite=lax': error.InvalidDomain

info(browser): GET http://localhost:8000/login 200
info(browser): fetch http://localhost:8000/js/app.js: 200
info(server): accepting new conn...

and the Jest script

import {BrowserContext, Page} from "puppeteer";

describe('Create Role Tests', () => {
  let page: Page;
  let context: BrowserContext
  let url: string
  let credentials: { email: string, password: string }

  afterAll(async () => {
    await page.close()
    await context.close()
  });

  beforeAll(async () => {
    credentials = {
      password: '12345678',
      email: 'team@gmail.com',
    }

    url = 'http://localhost:8000'
    context = await globalThis.__BROWSER_GLOBAL__.createBrowserContext()
    page = await context.newPage()

    await page.goto('http://localhost:8000/login', {
      waitUntil: 'networkidle2'
    });

    await page.click('#email', {count: 3});
    await page.type('#email', credentials.email);
    await page.click('#password', {count: 3});
    await page.type('#password', credentials.password);

    await Promise.all([
      page.waitForNavigation({waitUntil: 'networkidle2'}),
      page.click('button[type="submit"]'),
    ]);
  })

  it('can click new role dropdown and redirect to create role page', async () => {
    await page.evaluate(() => {
      const button = document.querySelector('[data-test="create_role_dropdown"]') as HTMLElement;
      const dropdown = new (window as any).bootstrap.Dropdown(button);
      dropdown.show();
    });

    await page.evaluate(() => {
      const element = document.querySelector('#create-perm-role-button') as HTMLAnchorElement;
      if (element) {
        element.click();
      }
    });

    await page.waitForNavigation({ waitUntil: 'networkidle2' });

    expect(page.url()).toBe(`${url}/roles/create?type=2`)
  });
})

My setup test:

import { promises } from 'fs';
import os from 'os'
import path from 'path'
import puppeteer from 'puppeteer'

const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup');

module.exports = async function () {
  console.log('Setting up browser...');

  try {
    const browser = await puppeteer.connect({
      browserWSEndpoint: "ws://127.0.0.1:9222",
    })

    globalThis.__BROWSER_GLOBAL__ = browser;

    await promises.mkdir(DIR, {recursive: true});
    await promises.writeFile(path.join(DIR, 'wsEndpoint'), browser.wsEndpoint());

    console.log('Browser setup complete');
  } catch (error) {
    console.error('Browser setup failed:', error);
    throw error;
  }
};

What i can do to fix this error? Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions