I'm a newbie with Puppeteer but I try to use it to run my E2E tests.
My JS runtime is Bun (v.0.6.9) and puppeteer should work.
Below, a simple test throwing a puppeteer error I can't fix.
describe('A test', async () => {
  const browser = await puppeteer.launch({ defaultViewport: null, headless: false })
  const page = await browser.newPage()
  beforeEach(async () => await page.goto('http://localhost:3000'))
  afterEach(async () => await page.close())
  afterAll(async () => await browser.close())
  it('should learn puppeteer', async () => {
    console.log(page.url())                  // it works (log: http://localhost:3000/)
    const source = await page.content();
    console.log(source)                     // it works
    page
      .click('input[type="submit"]')
      .then(() => console.log('got it'))
      .catch((e) => console.log(e))        // it throws
    console.log('this line is logged')     // this line is logged
    expect(1).toBe(1)                      // this test pass
  })
})
The error:
34 |     /**
35 |      * @internal
36 |      */
37 |     constructor(message) {
38 |         super(message);
39 |         this.name = this.constructor.name;
                ^
TargetCloseError: Protocol error (Runtime.callFunctionOn): Target closed
 code: "undefined"
      at /Users/charnould/GitHub/malro/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js:39:13
Do you have any clue?
Nota: My webpage (http://localhost:3000) do include somewhere: <input type="submit" value="Login">
