Flaky e2e fuseki-ui test "Edits the graph"

Open
#4,394 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@OyvindLGjesdal is already working on this.

Since Nov 10, 2026.

  • #4395 by @OyvindLGjesdal — open

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cypress, java
Domain
frontend, testing

Research direction

Start with the Fuseki UI end-to-end test tests/e2e/specs/datasets.cy.js, where the failing “Edits the graph” test times out waiting for a table header. Inspect how the test waits for /$/server and how the UI handles services being null; the issue suggests disabling the button until services are available. Done means the test reliably passes when the server response is delayed.

Written by the indexing model from the issue text.

Description

bug
Version

6.3.0-SNAPSHOT

What happened?

I notice some CI jobs fail with https://github.com/apache/jena/actions/runs/42764963660/job/129734662694?pr=4356

It looks like this is due to timing, e.g clicking the button before the mock server serves anything on /$/server.
Forcing a delay for thIs response in cypress, causes the test to fail each time.

Claude suggests having the button disabled while services is null.

Relevant output and stacktrace
INFO] [TESTS]       ✓ Visualizes the dataset information (Info View, tab) (450ms)
[INFO] [TESTS] 
[INFO] [CLIENT] 10:35:18 AM [vite] (client) page reload coverage/lcov-report/index.html
[INFO] [TESTS] 
[INFO] [TESTS]   8 passing (29s)
[INFO] [TESTS]   1 failing
[INFO] [TESTS] 
[INFO] [TESTS]   1) datasets
[INFO] [TESTS]        after creating new datasets
[INFO] [TESTS]          Edits the graph:
[INFO] [TESTS]      AssertionError: Timed out retrying after 20000ms: Expected to find element: `table.jena-table > thead > tr > th`, but never found it.
[INFO] [TESTS]       at Context.eval (http://localhost:34339/__cypress/tests?p=tests/e2e/specs/datasets.cy.js:95:8)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   (Results)
[INFO] [TESTS] 
[INFO] [TESTS]   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
[INFO] [TESTS]   │ Tests:        9                                                                                │
[INFO] [TESTS]   │ Passing:      8                                                                                │
[INFO] [TESTS]   │ Failing:      1                                                                                │
[INFO] [TESTS]   │ Pending:      0                                                                                │
[INFO] [TESTS]   │ Skipped:      0                                                                                │
[INFO] [TESTS]   │ Screenshots:  1                                                                                │
[INFO] [TESTS]   │ Video:        false                                                                            │
[INFO] [TESTS]   │ Duration:     28 seconds                                                                       │
[INFO] [TESTS]   │ Spec Ran:     datasets.cy.js                                                                   │
[INFO] [TESTS]   └────────────────────────────────────────────────────────────────────────────────────────────────┘
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   (Screenshots)
[INFO] [TESTS] 
[INFO] [TESTS]   -  /home/runner/work/jena/jena/jena-fuseki2/jena-fuseki-ui/tests/e2e/screenshots/da     (1280x720)
[INFO] [TESTS]      tasets.cy.js/datasets -- after creating new datasets -- Edits the graph (failed)               
[INFO] [TESTS]      .png                                                                                           
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS] ────────────────────────────────────────────────────────────────────────────────────────────────────
[INFO] [TESTS]                                                                                                     
[INFO] [TESTS]   Running:  menu.cy.js                                                                      (2 of 4)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   menu
[INFO] [TESTS]     on a small screen
[INFO] [SERVER] GET /$/ping 200 0.193 ms - 40
[INFO] [SERVER] GET /$/server 200 0.200 ms - 105
[INFO] [TESTS] ⚠️ file /home/runner/work/jena/jena/jena-fuseki2/jena-fuseki-ui/.nyc_output/out.json has no coverage information
[INFO] [TESTS] Did you forget to instrument your web application? Read https://github.com/cypress-io/code-coverage#instrument-your-application
[INFO] [CLIENT] 10:35:22 AM [vite] (client) page reload coverage/lcov-report/index.html
[INFO] [TESTS]       ✓ Opens and closes the collapsed menu with the toggler (1696ms)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   1 passing (2s)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   (Results)
[INFO] [TESTS] 
[INFO] [TESTS]   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
[INFO] [TESTS]   │ Tests:        1                                                                                │
[INFO] [TESTS]   │ Passing:      1                                                                                │
[INFO] [TESTS]   │ Failing:      0                                                                                │
[INFO] [TESTS]   │ Pending:      0                                                                                │
[INFO] [TESTS]   │ Skipped:      0                                                                                │
[INFO] [TESTS]   │ Screenshots:  0                                                                                │
[INFO] [TESTS]   │ Video:        false                                                                            │
[INFO] [TESTS]   │ Duration:     1 second                                                                         │
[INFO] [TESTS]   │ Spec Ran:     menu.cy.js                                                                       │
[INFO] [TESTS]   └────────────────────────────────────────────────────────────────────────────────────────────────┘
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS] ────────────────────────────────────────────────────────────────────────────────────────────────────
[INFO] [TESTS]                                                                                                     
[INFO] [TESTS]   Running:  query.cy.js                                                                     (3 of 4)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   Query
[INFO] [SERVER] GET /tests/reset 200 0.167 ms - 2
[INFO] [SERVER] GET /$/ping 200 0.212 ms - 40
[INFO] [SERVER] POST /$/datasets 200 0.304 ms - 2
[INFO] [SERVER] GET /$/server 200 0.255 ms - -
[INFO] [SERVER] GET /$/server 200 0.247 ms - -
[INFO] [SERVER] GET /$/stats/skosmos 200 0.201 ms - -
[INFO] [SERVER] GET /tests/reset 200 0.167 ms - 2
[INFO] [TESTS]     ✓ Uses the correct SPARQL Endpoint (2113ms)
[INFO] [SERVER] GET /tests/reset 200 0.148 ms - 2
[INFO] [SERVER] GET /$/ping 200 0.228 ms - 40
[INFO] [SERVER] POST /$/datasets 200 0.274 ms - 2
[INFO] [SERVER] GET /$/server 200 0.198 ms - -
[INFO] [SERVER] GET /$/server 304 0.268 ms - -
[INFO] [SERVER] GET /$/stats/skosmos 304 0.296 ms - -
[INFO] [SERVER] GET /tests/reset 200 0.187 ms - 2
[INFO] [TESTS] ⚠️ file /home/runner/work/jena/jena/jena-fuseki2/jena-fuseki-ui/.nyc_output/out.json has no coverage information
[INFO] [TESTS] Did you forget to instrument your web application? Read https://github.com/cypress-io/code-coverage#instrument-your-application
[INFO] [CLIENT] 10:35:26 AM [vite] (client) page reload coverage/lcov-report/index.html
[INFO] [TESTS]     ✓ Can resize the query editor (964ms)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   2 passing (3s)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   (Results)
[INFO] [TESTS] 
[INFO] [TESTS]   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
[INFO] [TESTS]   │ Tests:        2                                                                                │
[INFO] [TESTS]   │ Passing:      2                                                                                │
[INFO] [TESTS]   │ Failing:      0                                                                                │
[INFO] [TESTS]   │ Pending:      0                                                                                │
[INFO] [TESTS]   │ Skipped:      0                                                                                │
[INFO] [TESTS]   │ Screenshots:  0                                                                                │
[INFO] [TESTS]   │ Video:        false                                                                            │
[INFO] [TESTS]   │ Duration:     3 seconds                                                                        │
[INFO] [TESTS]   │ Spec Ran:     query.cy.js                                                                      │
[INFO] [TESTS]   └────────────────────────────────────────────────────────────────────────────────────────────────┘
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS] ────────────────────────────────────────────────────────────────────────────────────────────────────
[INFO] [TESTS]                                                                                                     
[INFO] [TESTS]   Running:  upload.cy.js                                                                    (4 of 4)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   upload
[INFO] [SERVER] GET /tests/reset 200 0.160 ms - 2
[INFO] [SERVER] GET /$/ping 200 0.246 ms - 40
[INFO] [SERVER] POST /$/datasets 200 0.686 ms - 2
[INFO] [SERVER] GET /$/server 200 0.176 ms - -
[INFO] [SERVER] GET /$/server 304 0.247 ms - -
[INFO] [SERVER] GET /$/stats/skosmos 200 0.216 ms - -
[INFO] [SERVER] GET /tests/reset 200 0.223 ms - 2
[INFO] [TESTS]     ✓ displays an empty progress bar by default (1290ms)
[INFO] [SERVER] GET /tests/reset 200 0.196 ms - 2
[INFO] [SERVER] GET /$/ping 200 0.153 ms - 40
[INFO] [SERVER] POST /$/datasets 200 0.310 ms - 2
[INFO] [SERVER] GET /$/server 304 0.292 ms - -
[INFO] [SERVER] GET /$/server 304 0.193 ms - -
[INFO] [SERVER] GET /$/stats/skosmos 304 0.191 ms - -
[INFO] [SERVER] GET /tests/reset 200 0.209 ms - 2
[INFO] [TESTS]     ✓ accepts a blank graph name, and uploads to the dataset (993ms)
[INFO] [SERVER] GET /tests/reset 200 0.185 ms - 2
[INFO] [SERVER] GET /$/ping 200 0.218 ms - 40
[INFO] [SERVER] POST /$/datasets 200 0.262 ms - 2
[INFO] [SERVER] GET /$/server 200 0.167 ms - -
[INFO] [SERVER] GET /$/server 304 0.243 ms - -
[INFO] [SERVER] GET /$/stats/skosmos 304 0.200 ms - -
[INFO] [SERVER] GET /tests/reset 200 0.191 ms - 2
[INFO] [TESTS]     ✓ rejects an invalid graph name (720ms)
[INFO] [SERVER] GET /tests/reset 200 0.145 ms - 2
[INFO] [SERVER] GET /$/ping 200 0.221 ms - 40
[INFO] [SERVER] POST /$/datasets 200 0.256 ms - 2
[INFO] [SERVER] GET /$/server 200 0.183 ms - -
[INFO] [SERVER] GET /$/server 304 0.193 ms - -
[INFO] [SERVER] GET /$/stats/skosmos 304 0.302 ms - -
[INFO] [SERVER] GET /tests/reset 200 0.146 ms - 2
[INFO] [TESTS] ⚠️ file /home/runner/work/jena/jena/jena-fuseki2/jena-fuseki-ui/.nyc_output/out.json has no coverage information
[INFO] [TESTS] Did you forget to instrument your web application? Read https://github.com/cypress-io/code-coverage#instrument-your-application
[INFO] [CLIENT] 10:35:32 AM [vite] (client) page reload coverage/lcov-report/index.html
[INFO] [TESTS]     ✓ displays the progress for success and failure (965ms)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   4 passing (4s)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]   (Results)
[INFO] [TESTS] 
[INFO] [TESTS]   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
[INFO] [TESTS]   │ Tests:        4                                                                                │
[INFO] [TESTS]   │ Passing:      4                                                                                │
[INFO] [TESTS]   │ Failing:      0                                                                                │
[INFO] [TESTS]   │ Pending:      0                                                                                │
[INFO] [TESTS]   │ Skipped:      0                                                                                │
[INFO] [TESTS]   │ Screenshots:  0                                                                                │
[INFO] [TESTS]   │ Video:        false                                                                            │
[INFO] [TESTS]   │ Duration:     4 seconds                                                                        │
[INFO] [TESTS]   │ Spec Ran:     upload.cy.js                                                                     │
[INFO] [TESTS]   └────────────────────────────────────────────────────────────────────────────────────────────────┘
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS] ====================================================================================================
[INFO] [TESTS] 
[INFO] [TESTS]   (Run Finished)
[INFO] [TESTS] 
[INFO] [TESTS] 
[INFO] [TESTS]        Spec                                              Tests  Passing  Failing  Pending  Skipped  
[INFO] [TESTS]   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
[INFO] [TESTS]   │ ✖  datasets.cy.js                           00:28        9        8        1        -        - │
[INFO] [TESTS]   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
[INFO] [TESTS]   │ ✔  menu.cy.js                               00:01        1        1        -        -        - │
[INFO] [TESTS]   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
[INFO] [TESTS]   │ ✔  query.cy.js                              00:03        2        2        -        -        - │
[INFO] [TESTS]   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
[INFO] [TESTS]   │ ✔  upload.cy.js                             00:04        4        4        -        -        - │
[INFO] [TESTS]   └────────────────────────────────────────────────────────────────────────────────────────────────┘
[INFO] [TESTS]     ✖  1 of 4 failed (25%)                      00:37       16       15        1        -        -  
[INFO] [TESTS] 
[INFO] [TESTS] ----------------------------------------------------------------------------------------------------
[INFO] [TESTS] 
[INFO] [TESTS]   Debug faster with full visibility.
[INFO] [TESTS] 
[INFO] [TESTS]   Record to Cypress Cloud and get instant access to full test details and replays.
[INFO] [TESTS]   Inspect the DOM, network events, and console logs exactly as they ran in CI.
[INFO] [TESTS] 
[INFO] [TESTS]   >> https://on.cypress.io/cloud-get-started
[INFO] [TESTS] 
[INFO] [TESTS] ----------------------------------------------------------------------------------------------------
[INFO] [TESTS] yarn wait-on http-get://localhost:34339/index.html && cypress run  exited with code 1
[INFO] --> Sending SIGTERM to other processes..
[INFO] [SERVER] yarn run serve:fuseki exited with code SIGTERM
[INFO] --> Sending SIGTERM to other processes..
[INFO] [CLIENT] yarn wait-on http://localhost:46775/$/ping && yarn run dev exited with code SIGTERM
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache Jena 6.3.0-SNAPSHOT:
[INFO] 
[INFO] Apache Jena ........................................ SUCCESS [01:07 min]
[INFO] Apache Jena - IRI3986 .............................. SUCCESS [  9.535 s]
[INFO] Apache Jena - Language tags ........................ SUCCESS [  2.772 s]
[INFO] Apache Jena - Base ................................. SUCCESS [  5.740 s]
[INFO] Apache Jena - Core ................................. SUCCESS [ 46.033 s]
[INFO] Apache Jena - ARQ .................................. SUCCESS [ 50.802 s]
[INFO] Apache Jena - ONTAPI ............................... SUCCESS [ 18.423 s]
[INFO] Apache Jena - SHACL ................................ SUCCESS [  4.663 s]
[INFO] Apache Jena - ShEx ................................. SUCCESS [  6.052 s]
[INFO] Apache Jena - RDF Patch ............................ SUCCESS [  3.780 s]
[INFO] Apache Jena - RDF Connection ....................... SUCCESS [  3.615 s]
[INFO] Apache Jena - DBOE Database Operation Environment .. SUCCESS [  0.198 s]
[INFO] Apache Jena - DBOE Base ............................ SUCCESS [  2.477 s]
[INFO] Apache Jena - DBOE Transactions .................... SUCCESS [  2.159 s]
[INFO] Apache Jena - DBOE Indexes ......................... SUCCESS [  0.728 s]
[INFO] Apache Jena - DBOE Index test suite ................ SUCCESS [  0.601 s]
[INFO] Apache Jena - DBOE Transactional Datastructures .... SUCCESS [ 37.340 s]
[INFO] Apache Jena - DBOE Storage ......................... SUCCESS [  2.248 s]
[INFO] Apache Jena - TDB1 (Native Triple Store) ........... SUCCESS [ 11.412 s]
[INFO] Apache Jena - TDB2 (Native Triple Store) ........... SUCCESS [ 11.842 s]
[INFO] Apache Jena - Libraries POM ........................ SUCCESS [  0.522 s]
[INFO] Apache Jena - Command line tools ................... SUCCESS [  6.685 s]
[INFO] Apache Jena - SPARQL Text Search ................... SUCCESS [  7.781 s]
[INFO] Apache Jena - Service Enhancer ..................... SUCCESS [ 16.685 s]
[INFO] Apache Jena - GeoSPARQL Engine ..................... SUCCESS [ 23.934 s]
[INFO] Apache Jena - Fuseki ............................... SUCCESS [  0.054 s]
[INFO] Apache Jena - Fuseki Core Engine ................... SUCCESS [  4.187 s]
[INFO] Apache Jena - Fuseki UI ............................ FAILURE [01:27 min]
[INFO] Apache Jena - Fuseki Data Access Control ........... SKIPPED
[INFO] Apache Jena - Fuseki Server Main ................... SKIPPED
[INFO] Apache Jena - Fuseki MOD - GeoSPARQL ............... SKIPPED
[INFO] Apache Jena - Fuseki Server Jar .................... SKIPPED
[INFO] Apache Jena - Fuseki Docker Tools .................. SKIPPED
[INFO] Apache Jena - Fuseki Binary Distribution ........... SKIPPED
[INFO] Apache Jena - Fuseki with GeoSPARQL Engine ......... SKIPPED
[INFO] Apache Jena - CommonsRDF for Jena .................. SKIPPED
[INFO] Apache Jena - Query Builder ........................ SKIPPED
[INFO] Apache Jena - Integration Testing .................. SKIPPED
[INFO] Apache Jena - Distribution ......................... SKIPPED
[INFO] Apache Jena - Code Examples ........................ SKIPPED
[INFO] Apache Jena - BOM .................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  07:16 min
[INFO] Finished at: 2026-11-10T10:35:32Z
[INFO] ------------------------------------------------------------------------
Are you interested in making a pull request?

Yes

Dominant language
Java
Stars
1.5k
Forks
733
Avg merge
1d 4h
Merged PRs (30d)
48

Getting set up

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.

More from apache/jena

All issues in apache/jena

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.