Job
Difficulty
Easy
Medium
Hard
Impossible with Cypress Studio
Cancel
Spec (updated on Thu Aug 27 12:12:40 2026)
describe("tools/patronclubs/clubsearchtohold", function () {
const languages = ['en', 'es-ES', 'fr-FR', 'de-DE', 'el-GR', 'hi', 'zh-Hant-TW'];
languages.forEach((lang) => {
describe(`in ${lang}`, () => {
beforeEach(function(){
// Skip if 'en' test failed
if (Cypress.expose("EN_TEST_FAILED")) {
this.skip();
}
cy.task("query", {sql: "INSERT INTO club_templates (id, name, description, is_enrollable_from_opac, is_email_required, branchcode, is_deletable) VALUES (1, 'Test', 'Test club Template', 0, 0, 'CPL', 1)"});
cy.task("query", {sql: "INSERT INTO clubs (id, club_template_id, name, description, date_start, date_end, branchcode) VALUES (1, 1, 'March Club', 'Meet to discuss the selected title', '2025-09-01', '2099-01-01', 'CPL')"});
cy.task("query", {sql: "INSERT INTO club_template_enrollment_fields (id, club_template_id, name, description, authorised_value_category) VALUES (1, 1, 'Do you need a large print version of the book?', 'Large print is easier to read', 'YES_NO')"});
cy.task("query", {sql: "INSERT INTO club_template_enrollment_fields (id, club_template_id, name, description, authorised_value_category) VALUES (2, 1, 'Do you need an audio version of the book?', 'We also have audiobooks for most books', 'YES_NO')"});
cy.task("query", {sql: "INSERT INTO club_enrollments (id, club_id, borrowernumber, date_enrolled, date_created, branchcode) VALUES (1, 1, 49, '2025-09-18 14:08:08', '2025-09-18 14:08:08', 'CPL')"});
cy.task("query", {sql: "INSERT INTO club_enrollments (id, club_id, borrowernumber, date_enrolled, date_created, branchcode) VALUES (2, 1, 19, '2025-09-18 14:08:08', '2025-09-18 14:08:08', 'CPL')"});
cy.task("query", {sql: "INSERT INTO club_enrollments (id, club_id, borrowernumber, date_enrolled, date_created, branchcode) VALUES (3, 1, 5, '2025-09-18 14:08:08', '2025-09-18 14:08:08', 'CPL')"});
cy.task("query", {sql: "INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (1, 1, 1, 0)"});
cy.task("query", {sql: "INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (2, 1, 2, 0)"});
cy.task("query", {sql: "INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (3, 2, 1, 1)"});
cy.task("query", {sql: "INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (4, 2, 2, 0)"});
cy.task("query", {sql: "INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (5, 3, 1, 0)"});
cy.task("query", {sql: "INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (6, 3, 2, 1)"});
cy.login();
/* No specific padding defined */
cy.set_cookie_lang(lang);
});
it("clubsearchtohold", function () {
cy.visit("/cgi-bin/koha/clubs/clubs.pl");
cy.waitForPageLoad();
cy.get("#clubactions1").click();
cy.wait_for_ajax();
cy.get("a.dropdown-item.club_hold_search").addCursor();
cy.get("main").should('be.visible').screenshot("clubsearchtohold");
});
});
});
afterEach(function () {
cy.task("query", {sql: "DELETE FROM club_templates WHERE id=1"});
cy.task("query", {sql: "DELETE FROM clubs WHERE id=1"});
cy.task("query", {sql: "DELETE FROM club_template_enrollment_fields WHERE id=1"});
cy.task("query", {sql: "DELETE FROM club_template_enrollment_fields WHERE id=2"});
cy.task("query", {sql: "DELETE FROM club_enrollments WHERE id=1"});
cy.task("query", {sql: "DELETE FROM club_enrollments WHERE id=2"});
cy.task("query", {sql: "DELETE FROM club_enrollments WHERE id=3"});
cy.task("query", {sql: "DELETE FROM club_enrollment_fields WHERE id=1"});
cy.task("query", {sql: "DELETE FROM club_enrollment_fields WHERE id=2"});
cy.task("query", {sql: "DELETE FROM club_enrollment_fields WHERE id=3"});
cy.task("query", {sql: "DELETE FROM club_enrollment_fields WHERE id=4"});
cy.task("query", {sql: "DELETE FROM club_enrollment_fields WHERE id=5"});
cy.task("query", {sql: "DELETE FROM club_enrollment_fields WHERE id=6"});
Cypress.expose('PADDING_BEFORE_SCREENSHOT', undefined);
// Set EN_TEST_FAILED if the 'en' test failed
if (this.currentTest.parent.title.includes('in en') && this.currentTest.state === 'failed') {
Cypress.expose("EN_TEST_FAILED", true);
}
});
});
Spec data
Page
clubs/clubs.pl
Interface
staff
Element selector
main
Missing selector
N
setup
sql INSERT INTO club_templates (id, name, description, is_enrollable_from_opac, is_email_required, branchcode, is_deletable) VALUES (1, 'Test', 'Test club Template', 0, 0, 'CPL', 1)
sql INSERT INTO clubs (id, club_template_id, name, description, date_start, date_end, branchcode) VALUES (1, 1, 'March Club', 'Meet to discuss the selected title', '2025-09-01', '2099-01-01', 'CPL')
sql INSERT INTO club_template_enrollment_fields (id, club_template_id, name, description, authorised_value_category) VALUES (1, 1, 'Do you need a large print version of the book?', 'Large print is easier to read', 'YES_NO')
sql INSERT INTO club_template_enrollment_fields (id, club_template_id, name, description, authorised_value_category) VALUES (2, 1, 'Do you need an audio version of the book?', 'We also have audiobooks for most books', 'YES_NO')
sql INSERT INTO club_enrollments (id, club_id, borrowernumber, date_enrolled, date_created, branchcode) VALUES (1, 1, 49, '2025-09-18 14:08:08', '2025-09-18 14:08:08', 'CPL')
sql INSERT INTO club_enrollments (id, club_id, borrowernumber, date_enrolled, date_created, branchcode) VALUES (2, 1, 19, '2025-09-18 14:08:08', '2025-09-18 14:08:08', 'CPL')
sql INSERT INTO club_enrollments (id, club_id, borrowernumber, date_enrolled, date_created, branchcode) VALUES (3, 1, 5, '2025-09-18 14:08:08', '2025-09-18 14:08:08', 'CPL')
sql INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (1, 1, 1, 0)
sql INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (2, 1, 2, 0)
sql INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (3, 2, 1, 1)
sql INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (4, 2, 2, 0)
sql INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (5, 3, 1, 0)
sql INSERT INTO club_enrollment_fields (id, club_enrollment_id, club_template_enrollment_field_id, value) VALUES (6, 3, 2, 1)
workflow
click #clubactions1
wait_for_ajax
add_cursor a.dropdown-item.club_hold_search
teardown
sql DELETE FROM club_templates WHERE id=1
sql DELETE FROM clubs WHERE id=1
sql DELETE FROM club_template_enrollment_fields WHERE id=1
sql DELETE FROM club_template_enrollment_fields WHERE id=2
sql DELETE FROM club_enrollments WHERE id=1
sql DELETE FROM club_enrollments WHERE id=2
sql DELETE FROM club_enrollments WHERE id=3
sql DELETE FROM club_enrollment_fields WHERE id=1
sql DELETE FROM club_enrollment_fields WHERE id=2
sql DELETE FROM club_enrollment_fields WHERE id=3
sql DELETE FROM club_enrollment_fields WHERE id=4
sql DELETE FROM club_enrollment_fields WHERE id=5
sql DELETE FROM club_enrollment_fields WHERE id=6
Notes
Cancel
Additional KTD data
Cancel