Bug 40170

Summary: Replace cypress-mysql with mysql2
Product: Koha Reporter: Jonathan Druart <jonathan.druart>
Component: Test SuiteAssignee: Jonathan Druart <jonathan.druart>
Status: Signed Off --- QA Contact: Testopia <testopia>
Severity: enhancement    
Priority: P5 - low CC: david
Version: unspecified   
Hardware: All   
OS: All   
GIT URL: Change sponsored?: ---
Patch complexity: --- Documentation contact:
Documentation submission: Text to go in the release notes:
Version(s) released in:
Circulation function:
Bug Depends on: 40168    
Bug Blocks: 40174    
Attachments: Bug 40170: Replace cypress-mysql with mysql2 - Cypress tests
Bug 40170: Replace cypress-mysql with mysql2 - Cypress tests

Description Jonathan Druart 2025-06-18 20:25:19 UTC

    
Comment 1 Jonathan Druart 2025-06-18 20:43:16 UTC
Created attachment 183352 [details] [review]
Bug 40170: Replace cypress-mysql with mysql2 - Cypress tests

This patch suggests to replace cypress-mysql with mysql2

cypress-mysql provides a custom Cypress command (cy.query) that run within the browser context.
This approach mixes test-side and server-side and is limited in flexibility and error handling.

mysql2 runs inside Cypress plugins (Node process) via cy.task calls, which are executed server-side (outside the browser)

This is needed for the follow-up bug reports where we need to request
the DB from other plugins

Test plan:
Run `yarn install` to install the mysql2
All the Cypress tests modified by this patch must still pass
The new test t/cypress/integration/t/db.ts must also pass
Comment 2 David Nind 2025-06-18 22:37:57 UTC
Created attachment 183359 [details] [review]
Bug 40170: Replace cypress-mysql with mysql2 - Cypress tests

This patch suggests to replace cypress-mysql with mysql2

cypress-mysql provides a custom Cypress command (cy.query) that run within the browser context.
This approach mixes test-side and server-side and is limited in flexibility and error handling.

mysql2 runs inside Cypress plugins (Node process) via cy.task calls, which are executed server-side (outside the browser)

This is needed for the follow-up bug reports where we need to request
the DB from other plugins

Test plan:
Run `yarn install` to install the mysql2
All the Cypress tests modified by this patch must still pass
The new test t/cypress/integration/t/db.ts must also pass

Signed-off-by: David Nind <david@davidnind.com>
Comment 3 David Nind 2025-06-18 22:38:55 UTC
Testing notes (using KTD):
1. New or changed tests:
   yarn cypress run --spec t/cypress/integration/Auth/csrf.ts
   yarn cypress run --spec t/cypress/integration/Islands/AcquisitionsMenu_spec.ts
   yarn cypress run --spec t/cypress/integration/KohaTable/Holdings_spec.ts 
   yarn cypress run --spec t/cypress/integration/KohaTable/PatronSearch_spec.ts
   yarn cypress run --spec t/cypress/integration/t/db.ts