mozilla / mozilla/pdf.js

Intermittent failure in the `should keep an ink annotation on a pasted and moved page` reorganize pages integration test

Open
#21,954 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

intermittent test
Dominant language
JavaScript
Stars
53.9k
Forks
10.7k
Avg merge
18h 38m
Merged PRs (30d)
130

Description

This integration test fails intermittently in GitHub Actions. The last occurrence is in https://github.com/mozilla/pdf.js/actions/runs/34764130770/job/103741972381:

Failures:
1) Reorganize Pages View Copy page with an ink annotation and paste it should keep an ink annotation on a pasted and moved page
  Message:
    Error: Waiting for selector `.page[data-page-number="1"] .inkEditor` failed
  Stack:
    error properties: Object({ cause: Error: Waiting failed })
        at CSSQueryHandler.waitFor (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/QueryHandler.js:211:46)
        at runNextTicks (node:internal/process/task_queues:65:5)
        at listOnTimeout (node:internal/timers:644:9)
        at process.processTimers (node:internal/timers:618:7)
        at async BidiFrame.waitForSelector (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/api/Frame.js:546:21)
        at async BidiPage.waitForSelector (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/api/Page.js:1477:20)
        at async file:///home/runner/work/pdf.js/pdf.js/test/integration/reorganize_pages_spec.mjs:2962:11
        at async Promise.all (index 0)
        at async UserContext.<anonymous> (file:///home/runner/work/pdf.js/pdf.js/test/integration/reorganize_pages_spec.mjs:2884:7)
    Caused by: Error: Waiting failed
    error properties: Object({ cause: ProtocolError: script.callFunction timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed. })
        at <instance_members_initializer> (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/WaitTask.js:21:21)
        at new WaitTask (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/WaitTask.js:27:16)
        at BidiFrameRealm.waitForFunction (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/api/Realm.js:49:26)
        at CSSQueryHandler.waitFor (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/QueryHandler.js:176:95)
        at async BidiFrame.waitForSelector (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/api/Frame.js:546:21)
        at async BidiPage.waitForSelector (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/api/Page.js:1477:20)
        at async file:///home/runner/work/pdf.js/pdf.js/test/integration/reorganize_pages_spec.mjs:2962:11
        at async Promise.all (index 0)
        at async UserContext.<anonymous> (file:///home/runner/work/pdf.js/pdf.js/test/integration/reorganize_pages_spec.mjs:2884:7)
    Caused by: ProtocolError: script.callFunction timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
        at <instance_members_initializer> (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/CallbackRegistry.js:108:14)
        at new Callback (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/CallbackRegistry.js:112:16)
        at CallbackRegistry.create (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/CallbackRegistry.js:27:26)
        at BidiConnection.send (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/bidi/Connection.js:72:32)
        at Session.send (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/bidi/core/Session.js:134:42)
        at Session.<anonymous> (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/util/decorators.js:101:27)
        at WindowRealm.callFunction (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/bidi/core/Realm.js:92:51)
        at WindowRealm.<anonymous> (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/util/decorators.js:101:27)
        at #evaluate (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/bidi/Realm.js:145:42)
        at BidiFrameRealm.evaluateHandle (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/bidi/Realm.js:112:36)
        at BidiJSHandle.evaluateHandle (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/api/JSHandle.js:162:37)
        at WaitTask.rerun (file:///home/runner/work/pdf.js/pdf.js/node_modules/puppeteer-core/lib/puppeteer/common/WaitTask.js:99:47)

We should find out what's causing this and fix it because it seems to be one of the last known intermittents we have left for the integration tests at the moment.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in test/integration/reorganize_pages_spec.mjs around lines 2884 and 2962, using the reported GitHub Actions failure as the reproduction context. Run the reorganize-pages integration test and trace the pasted-and-moved ink annotation sequence to identify the intermittent wait failure. Done means the test reliably finds the .inkEditor selector and no longer intermittently fails in GitHub Actions.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.