cypress_test/integration_tests/common/helper.js | 22 ++++ cypress_test/integration_tests/common/mobile_helper.js | 9 - cypress_test/integration_tests/desktop/copy_paste_spec.js | 6 - cypress_test/integration_tests/mobile/calc/apply_font_spec.js | 14 +- cypress_test/integration_tests/mobile/calc/insertion_wizard_spec.js | 23 +--- cypress_test/integration_tests/mobile/calc/number_format_spec.js | 6 - cypress_test/integration_tests/mobile/calc/spellchecking_spec.js | 24 +--- cypress_test/integration_tests/mobile/impress/spellchecking_spec.js | 24 +--- cypress_test/integration_tests/mobile/writer/apply_font_spec.js | 19 +-- cypress_test/integration_tests/mobile/writer/focus_spec.js | 15 +- cypress_test/integration_tests/mobile/writer/insert_field_spec.js | 28 +---- cypress_test/integration_tests/mobile/writer/insert_formatting_mark_spec.js | 24 +--- cypress_test/integration_tests/mobile/writer/insert_object_spec.js | 54 +++------- cypress_test/integration_tests/mobile/writer/mobile_wizard_state_spec.js | 8 - cypress_test/integration_tests/mobile/writer/shape_properties_spec.js | 6 - cypress_test/integration_tests/mobile/writer/spellchecking_spec.js | 54 ++++------ cypress_test/integration_tests/mobile/writer/toolbar_spec.js | 2 cypress_test/integration_tests/mobile/writer/writer_helper.js | 12 -- 18 files changed, 148 insertions(+), 202 deletions(-)
New commits: commit 354f667c83bfe78cb4dd3dbb593b5412fcb51b06 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Wed Apr 8 19:24:16 2020 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Thu Apr 9 12:18:50 2020 +0200 cypress: introduce selectItemByContent() method instead of contains(). cy.get().contains() behaves unexpectedly. With pseudo code: // First find the item using the selector do { item = get(selector) } while (item == undefined) // Then wait until it get's the right content. // Item points to an object which can change it time. do { } while (item.content != specified_content) What we actually need is something like this: // Wait for an item which matches both the selector and content. do { item = get(selector) } while (item == undefined || item.content != specified_content) The new selectItemByContent() method behaves like this. It just looks wierd when you experience a test failure in the interactive test runner and you check the DOM and you can see the right item with the rigth content and the test still fails. Change-Id: I0b1466a165451e831401e1f4b500ce16bd3f38b0 Signed-off-by: Tamás Zolnai <tamas.zol...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91955 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/cypress_test/integration_tests/common/helper.js b/cypress_test/integration_tests/common/helper.js index 795973a55..9eab3b5b1 100644 --- a/cypress_test/integration_tests/common/helper.js +++ b/cypress_test/integration_tests/common/helper.js @@ -154,6 +154,27 @@ function afterAll(fileName) { cy.log('Waiting for closing the document - end.'); } +// There is no css selector for filtering based on +// the content of an item. cypress has Contains() +// method for that, but it sometimes behaves unexpectedly +// because it selects the elements first and waits until +// the existing items gets the specified text, instead of +// waiting for an item with the right content. +function selectItemByContent(selector, content) { + cy.log('Selecting item by content - start.'); + cy.log('Param - selector: ' + selector); + cy.log('Param - content: ' + content); + + // Wait for the content to appear + cy.get(selector) + .should('contain.text', content); + + cy.log('Selecting item by content - end.'); + + // Select the right item (selector can point to more items) + return cy.get(selector).contains(content.replace('\u00a0', ' ')); +} + module.exports.loadTestDoc = loadTestDoc; module.exports.assertCursorAndFocus = assertCursorAndFocus; module.exports.assertNoKeyboardInput = assertNoKeyboardInput; @@ -163,3 +184,4 @@ module.exports.clearAllText = clearAllText; module.exports.getTextForClipboard = getTextForClipboard; module.exports.expectTextForClipboard = expectTextForClipboard; module.exports.afterAll = afterAll; +module.exports.selectItemByContent = selectItemByContent; diff --git a/cypress_test/integration_tests/common/mobile_helper.js b/cypress_test/integration_tests/common/mobile_helper.js index f9e0b78f8..c63776596 100644 --- a/cypress_test/integration_tests/common/mobile_helper.js +++ b/cypress_test/integration_tests/common/mobile_helper.js @@ -34,8 +34,7 @@ function detectLOCoreVersion() { openHamburgerMenu(); // Open about dialog - cy.get('.ui-header.level-0 .menu-entry-with-icon') - .contains('About') + helper.selectItemByContent('.ui-header.level-0 .menu-entry-with-icon', 'About') .click(); cy.get('.vex-content') @@ -172,12 +171,8 @@ function executeCopyFromContextMenu(XPos, YPos) { longPressOnDocument(XPos, YPos); - cy.get('.menu-entry-with-icon') - .should('contain.text', 'Copy'); - // Execute copy - cy.get('.menu-entry-with-icon') - .contains('Copy') + helper.selectItemByContent('.menu-entry-with-icon', 'Copy') .click(); // Close warning about clipboard operations diff --git a/cypress_test/integration_tests/desktop/copy_paste_spec.js b/cypress_test/integration_tests/desktop/copy_paste_spec.js index a30111499..a4c2c3de5 100644 --- a/cypress_test/integration_tests/desktop/copy_paste_spec.js +++ b/cypress_test/integration_tests/desktop/copy_paste_spec.js @@ -26,14 +26,12 @@ describe('Clipboard operations.', function() { cy.get('body').rightclick(XPos, YPos); }); - cy.get('.context-menu-list').should('be.visible') - .get('.context-menu-item .context-menu-link') - .contains('Copy') + helper.selectItemByContent('.context-menu-link', 'Copy') .click(); // Loleaflet code can not execute document.execCommand() when executed by cypress // https://github.com/cypress-io/cypress/issues/2851 cy.get('.vex-dialog-message p') - .contains('Your browser has very limited access to the clipboard, so use these keyboard shortcuts:'); + .should('have.text', 'Your browser has very limited access to the clipboard, so use these keyboard shortcuts:'); }); }); diff --git a/cypress_test/integration_tests/mobile/calc/apply_font_spec.js b/cypress_test/integration_tests/mobile/calc/apply_font_spec.js index 1144e37b6..89a5fe2af 100644 --- a/cypress_test/integration_tests/mobile/calc/apply_font_spec.js +++ b/cypress_test/integration_tests/mobile/calc/apply_font_spec.js @@ -87,8 +87,7 @@ describe('Apply font changes.', function() { cy.get('#fontnamecombobox') .click(); - cy.get('.mobile-wizard.ui-combobox-text') - .contains('Linux Libertine G') + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', 'Linux Libertine G') .click(); cy.get('.level-1[title="Font Name"] .mobile-wizard.ui-combobox-text.selected') @@ -98,8 +97,8 @@ describe('Apply font changes.', function() { .click(); // Combobox entry contains the selected font name - cy.get('#fontnamecombobox .ui-header-right') - .contains('Linux Libertine G'); + cy.get('#fontnamecombobox .ui-header-right .entry-value') + .should('have.text', 'Linux Libertine G'); calcHelper.copyContentToClipboard(); @@ -112,8 +111,7 @@ describe('Apply font changes.', function() { cy.get('#fontsizecombobox') .click(); - cy.get('.mobile-wizard.ui-combobox-text') - .contains('14') + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', '14') .click(); if (Cypress.env('LO_CORE_VERSION') === 'master') @@ -127,8 +125,8 @@ describe('Apply font changes.', function() { .click(); // Combobox entry contains the selected font name - cy.get('#fontsizecombobox .ui-header-right') - .contains('14'); + cy.get('#fontsizecombobox .ui-header-right .entry-value') + .should('have.text', '14'); calcHelper.copyContentToClipboard(); diff --git a/cypress_test/integration_tests/mobile/calc/insertion_wizard_spec.js b/cypress_test/integration_tests/mobile/calc/insertion_wizard_spec.js index 132949338..4dd1c3e60 100644 --- a/cypress_test/integration_tests/mobile/calc/insertion_wizard_spec.js +++ b/cypress_test/integration_tests/mobile/calc/insertion_wizard_spec.js @@ -28,16 +28,15 @@ describe('Calc insertion wizard.', function() { }); it('Check existance of image insertion items.', function() { - cy.get('.menu-entry-with-icon') - .contains('Local Image...'); + helper.selectItemByContent('.menu-entry-with-icon', 'Local Image...') + .should('be.visible'); - cy.get('.menu-entry-with-icon') - .contains('Image...'); + helper.selectItemByContent('.menu-entry-with-icon', 'Image...') + .should('be.visible'); }); it('Insert chart.', function() { - cy.get('.menu-entry-with-icon') - .contains('Chart...') + helper.selectItemByContent('.menu-entry-with-icon', 'Chart...') .click(); cy.get('.leaflet-drag-transform-marker') @@ -45,8 +44,7 @@ describe('Calc insertion wizard.', function() { }); it('Insert hyperlink.', function() { - cy.get('.menu-entry-with-icon') - .contains('Hyperlink...') + helper.selectItemByContent('.menu-entry-with-icon', 'Hyperlink...') .click(); // Dialog is opened @@ -78,8 +76,7 @@ describe('Calc insertion wizard.', function() { it('Insert shape.', function() { // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Shape') + helper.selectItemByContent('.menu-entry-with-icon', 'Shape') .click(); cy.get('.basicshapes_ellipse'). @@ -98,8 +95,7 @@ describe('Calc insertion wizard.', function() { it('Insert date.', function() { // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Date') + helper.selectItemByContent('.menu-entry-with-icon', 'Date') .click(); calcHelper.copyContentToClipboard(); @@ -110,8 +106,7 @@ describe('Calc insertion wizard.', function() { it('Insert time.', function() { // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Time') + helper.selectItemByContent('.menu-entry-with-icon', 'Time') .click(); calcHelper.copyContentToClipboard(); diff --git a/cypress_test/integration_tests/mobile/calc/number_format_spec.js b/cypress_test/integration_tests/mobile/calc/number_format_spec.js index e727ee56d..ae0243769 100644 --- a/cypress_test/integration_tests/mobile/calc/number_format_spec.js +++ b/cypress_test/integration_tests/mobile/calc/number_format_spec.js @@ -35,8 +35,7 @@ describe('Apply number formatting.', function() { cy.get('#category') .click(); - cy.get('.mobile-wizard.ui-combobox-text') - .contains(formattingString) + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', formattingString) .click(); // Combobox entry contains the selected format @@ -222,8 +221,7 @@ describe('Apply number formatting.', function() { cy.get('#category') .click(); - cy.get('.mobile-wizard.ui-combobox-text') - .contains('Date') + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', 'Date') .click(); // Combobox entry contains the selected format diff --git a/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js b/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js index 24257d9ce..5fc7d95fa 100644 --- a/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js +++ b/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js @@ -55,8 +55,7 @@ describe('Calc spell checking menu.', function() { it('Apply suggestion.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('hello') + helper.selectItemByContent('.context-menu-link', 'hello') .click(); // Click outside of the cell @@ -81,8 +80,7 @@ describe('Calc spell checking menu.', function() { it('Ignore all.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Ignore All') + helper.selectItemByContent('.context-menu-link', 'Ignore\u00a0All') .click(); // Click outside of the cell @@ -98,15 +96,14 @@ describe('Calc spell checking menu.', function() { openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); it('Apply language for word.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Word is Finnish') + helper.selectItemByContent('.context-menu-link', 'Word\u00a0is Finnish') .click(); // Click outside of the cell @@ -122,15 +119,14 @@ describe('Calc spell checking menu.', function() { openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); it('Apply language for paragraph.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Paragraph is Finnish') + helper.selectItemByContent('.context-menu-link', 'Paragraph\u00a0is Finnish') .click(); // Click outside of the cell @@ -146,7 +142,7 @@ describe('Calc spell checking menu.', function() { openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); }); diff --git a/cypress_test/integration_tests/mobile/impress/spellchecking_spec.js b/cypress_test/integration_tests/mobile/impress/spellchecking_spec.js index c14193292..b85a8c350 100644 --- a/cypress_test/integration_tests/mobile/impress/spellchecking_spec.js +++ b/cypress_test/integration_tests/mobile/impress/spellchecking_spec.js @@ -63,8 +63,7 @@ describe('Spell checking menu.', function() { it('Apply suggestion.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('hello') + helper.selectItemByContent('.context-menu-link', 'hello') .click(); impressHelper.copyShapeContentToClipboard(); @@ -79,42 +78,39 @@ describe('Spell checking menu.', function() { it('Ignore all.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Ignore All') + helper.selectItemByContent('.context-menu-link', 'Ignore\u00a0All') .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); it('Apply language for word.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Word is Finnish') + helper.selectItemByContent('.context-menu-link', 'Word\u00a0is Finnish') .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); it('Apply language for paragraph.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Paragraph is Finnish') + helper.selectItemByContent('.context-menu-link', 'Paragraph\u00a0is Finnish') .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); }); diff --git a/cypress_test/integration_tests/mobile/writer/apply_font_spec.js b/cypress_test/integration_tests/mobile/writer/apply_font_spec.js index f139cfa40..e16626b77 100644 --- a/cypress_test/integration_tests/mobile/writer/apply_font_spec.js +++ b/cypress_test/integration_tests/mobile/writer/apply_font_spec.js @@ -34,14 +34,13 @@ describe('Apply font changes.', function() { cy.get('#mobile-wizard-back') .should('be.visible'); - cy.get('.mobile-wizard.ui-combobox-text') - .contains(styleName) + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', styleName) .click(); // Combobox entry contains the selected font name if (styleName !== 'Clear formatting') { cy.get('#applystyle .ui-header-right .entry-value') - .contains(styleName); + .should('have.text', styleName); } mobileHelper.closeMobileWizard(); @@ -52,8 +51,7 @@ describe('Apply font changes.', function() { cy.get('#fontnamecombobox') .click(); - cy.get('.mobile-wizard.ui-combobox-text') - .contains('Linux Libertine G') + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', 'Linux Libertine G') .click(); cy.get('.level-1[title="Font Name"] .mobile-wizard.ui-combobox-text.selected') @@ -63,8 +61,8 @@ describe('Apply font changes.', function() { .click(); // Combobox entry contains the selected font name - cy.get('#fontnamecombobox .ui-header-right') - .contains('Linux Libertine G'); + cy.get('#fontnamecombobox .ui-header-right .entry-value') + .should('have.text', 'Linux Libertine G'); writerHelper.copyTextToClipboard(); @@ -77,8 +75,7 @@ describe('Apply font changes.', function() { cy.get('#fontsizecombobox') .click(); - cy.get('.mobile-wizard.ui-combobox-text') - .contains('36') + helper.selectItemByContent('.mobile-wizard.ui-combobox-text', '36') .click(); if (Cypress.env('LO_CORE_VERSION') === 'master') @@ -92,8 +89,8 @@ describe('Apply font changes.', function() { .click(); // Combobox entry contains the selected font name - cy.get('#fontsizecombobox .ui-header-right') - .contains('36'); + cy.get('#fontsizecombobox .ui-header-right .entry-value') + .should('have.text', '36'); writerHelper.copyTextToClipboard(); diff --git a/cypress_test/integration_tests/mobile/writer/focus_spec.js b/cypress_test/integration_tests/mobile/writer/focus_spec.js index a8558763e..3a90e0f7d 100644 --- a/cypress_test/integration_tests/mobile/writer/focus_spec.js +++ b/cypress_test/integration_tests/mobile/writer/focus_spec.js @@ -45,7 +45,8 @@ describe('Focus tests', function() { .should('be.eq', 'loleaflet-annotation-textarea'); // Close the dialog - cy.contains('Cancel').click(); + cy.get('.vex-dialog-button-secondary') + .click(); cy.get('.loleaflet-annotation-table').should('be.not.visible'); // Body should have the focus again (no focus on document) @@ -115,13 +116,12 @@ describe('Focus tests', function() { .should('not.be.empty'); // Select More Fields - cy.get('.ui-header.level-0.mobile-wizard.ui-widget') - .contains('More Fields...') - .parent().click(); + helper.selectItemByContent('.ui-header.level-0.mobile-wizard.ui-widget', 'More Fields...') + .click(); // Insert a field - cy.get('.ui-header.level-1.mobile-wizard.ui-widget .menu-entry-with-icon') - .contains('Page Number').click(); + helper.selectItemByContent('.menu-entry-with-icon', 'Page Number') + .click(); cy.get('#mobile-wizard') .should('not.be.visible'); @@ -143,8 +143,7 @@ describe('Focus tests', function() { .should('not.be.empty'); // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Shape') + helper.selectItemByContent('.menu-entry-with-icon', 'Shape') .click(); cy.get('.col.w2ui-icon.basicshapes_rectangle'). diff --git a/cypress_test/integration_tests/mobile/writer/insert_field_spec.js b/cypress_test/integration_tests/mobile/writer/insert_field_spec.js index c924b7e43..8bfba8fc8 100644 --- a/cypress_test/integration_tests/mobile/writer/insert_field_spec.js +++ b/cypress_test/integration_tests/mobile/writer/insert_field_spec.js @@ -18,8 +18,7 @@ describe('Insert fields via insertion wizard.', function() { .should('be.visible'); // Open fields submenu - cy.get('.menu-entry-with-icon.flex-fullwidth') - .contains('More Fields...') + helper.selectItemByContent('.menu-entry-with-icon.flex-fullwidth', 'More Fields...') .click(); cy.get('.ui-content.level-0.mobile-wizard') @@ -32,34 +31,31 @@ describe('Insert fields via insertion wizard.', function() { it('Insert page number field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('Page Number') + helper.selectItemByContent('.menu-entry-with-icon', 'Page Number') .click(); writerHelper.copyTextToClipboard(); cy.get('#copy-paste-container p span sdfield') .should('have.attr', 'type', 'PAGE') - .contains('1'); + .should('have.text', '1'); }); it('Insert page count field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('Page Count') + helper.selectItemByContent('.menu-entry-with-icon', 'Page Count') .click(); writerHelper.copyTextToClipboard(); cy.get('#copy-paste-container p span sdfield') .should('have.attr', 'type', 'DOCSTAT') - .contains('1'); + .should('have.text', '1'); }); it('Insert date field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('Date') + helper.selectItemByContent('.menu-entry-with-icon', 'Date') .click(); writerHelper.copyTextToClipboard(); @@ -71,8 +67,7 @@ describe('Insert fields via insertion wizard.', function() { it('Insert time field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('Time') + helper.selectItemByContent('.menu-entry-with-icon', 'Time') .click(); writerHelper.copyTextToClipboard(); @@ -84,8 +79,7 @@ describe('Insert fields via insertion wizard.', function() { it('Insert title field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('Title') + helper.selectItemByContent('.menu-entry-with-icon', 'Title') .click(); writerHelper.copyTextToClipboard(); @@ -97,8 +91,7 @@ describe('Insert fields via insertion wizard.', function() { it('Insert author field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('First Author') + helper.selectItemByContent('.menu-entry-with-icon', 'First Author') .click(); writerHelper.copyTextToClipboard(); @@ -111,8 +104,7 @@ describe('Insert fields via insertion wizard.', function() { it('Insert subject field.', function() { // Insert field - cy.get('.menu-entry-with-icon') - .contains('Subject') + helper.selectItemByContent('.menu-entry-with-icon', 'Subject') .click(); writerHelper.copyTextToClipboard(); diff --git a/cypress_test/integration_tests/mobile/writer/insert_formatting_mark_spec.js b/cypress_test/integration_tests/mobile/writer/insert_formatting_mark_spec.js index 07a600d44..dc55069ce 100644 --- a/cypress_test/integration_tests/mobile/writer/insert_formatting_mark_spec.js +++ b/cypress_test/integration_tests/mobile/writer/insert_formatting_mark_spec.js @@ -18,8 +18,7 @@ describe('Insert formatting mark via insertion wizard.', function() { .should('be.visible'); // Open formatting marks - cy.get('.menu-entry-with-icon.flex-fullwidth') - .contains('Formatting Mark') + helper.selectItemByContent('.menu-entry-with-icon.flex-fullwidth', 'Formatting Mark') .click(); cy.get('.ui-content.level-0.mobile-wizard') @@ -31,8 +30,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert non-breaking space.', function() { - cy.get('.menu-entry-with-icon') - .contains('Non-breaking space') + helper.selectItemByContent('.menu-entry-with-icon', 'Non-breaking space') .click(); writerHelper.copyTextToClipboard(); @@ -45,8 +43,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert non-breaking hyphen.', function() { - cy.get('.menu-entry-with-icon') - .contains('Non-breaking hyphen') + helper.selectItemByContent('.menu-entry-with-icon', 'Non-breaking hyphen') .click(); writerHelper.copyTextToClipboard(); @@ -59,8 +56,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert soft hyphen.', function() { - cy.get('.menu-entry-with-icon') - .contains('Soft hyphen') + helper.selectItemByContent('.menu-entry-with-icon', 'Soft hyphen') .click(); writerHelper.copyTextToClipboard(); @@ -73,8 +69,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert no-width optional break.', function() { - cy.get('.menu-entry-with-icon') - .contains('No-width optional break') + helper.selectItemByContent('.menu-entry-with-icon', 'No-width optional break') .click(); writerHelper.copyTextToClipboard(); @@ -87,8 +82,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert no-width no break.', function() { - cy.get('.menu-entry-with-icon') - .contains('No-width no break') + helper.selectItemByContent('.menu-entry-with-icon', 'No-width no break') .click(); writerHelper.copyTextToClipboard(); @@ -101,8 +95,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert left-to-right mark.', function() { - cy.get('.menu-entry-with-icon') - .contains('Left-to-right mark') + helper.selectItemByContent('.menu-entry-with-icon', 'Left-to-right mark') .click(); writerHelper.copyTextToClipboard(); @@ -115,8 +108,7 @@ describe('Insert formatting mark via insertion wizard.', function() { }); it('Insert right-to-left mark.', function() { - cy.get('.menu-entry-with-icon') - .contains('Right-to-left mark') + helper.selectItemByContent('.menu-entry-with-icon', 'Right-to-left mark') .click(); writerHelper.copyTextToClipboard(); diff --git a/cypress_test/integration_tests/mobile/writer/insert_object_spec.js b/cypress_test/integration_tests/mobile/writer/insert_object_spec.js index 338230b44..b7d103e8e 100644 --- a/cypress_test/integration_tests/mobile/writer/insert_object_spec.js +++ b/cypress_test/integration_tests/mobile/writer/insert_object_spec.js @@ -26,8 +26,8 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // We check whether the entry is there - cy.get('.menu-entry-with-icon') - .contains('Local Image...'); + helper.selectItemByContent('.menu-entry-with-icon', 'Local Image...') + .should('be.visible'); // We not not test the insertion, it might depend on the system. }); @@ -38,8 +38,7 @@ describe('Insert objects via insertion wizard.', function() { cy.get('#mobile-wizard') .should('be.visible'); - cy.get('.menu-entry-with-icon') - .contains('Comment') + helper.selectItemByContent('.menu-entry-with-icon', 'Comment') .click(); // Comment insertion dialog is opened @@ -72,9 +71,9 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Open Table submenu - cy.get('.ui-header.level-0.mobile-wizard.ui-widget') - .contains('Table') + helper.selectItemByContent('.ui-header.level-0.mobile-wizard.ui-widget', 'Table') .click(); + cy.get('.mobile-wizard.ui-text') .should('be.visible'); @@ -109,8 +108,7 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Open Table submenu - cy.get('.ui-header.level-0.mobile-wizard.ui-widget') - .contains('Table') + helper.selectItemByContent('.ui-header.level-0.mobile-wizard.ui-widget', 'Table') .click(); cy.get('.mobile-wizard.ui-text') .should('be.visible'); @@ -158,20 +156,17 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Open header/footer submenu - cy.get('.menu-entry-with-icon') - .contains('Header and Footer') + helper.selectItemByContent('.menu-entry-with-icon', 'Header and Footer') .click(); cy.get('.ui-header.level-1.mobile-wizard.ui-widget') .should('be.visible'); // Open header submenu - cy.get('.ui-header.level-1.mobile-wizard.ui-widget') - .contains('Header') + helper.selectItemByContent('.ui-header.level-1.mobile-wizard.ui-widget', 'Header') .click(); // Insert header for All - cy.get('.menu-entry-no-icon') - .contains('All') + helper.selectItemByContent('.menu-entry-no-icon', 'All') .click(); // Check that the cursor was moved @@ -201,20 +196,17 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Open header/footer submenu - cy.get('.menu-entry-with-icon') - .contains('Header and Footer') + helper.selectItemByContent('.menu-entry-with-icon', 'Header and Footer') .click(); cy.get('.ui-header.level-1.mobile-wizard.ui-widget') .should('be.visible'); // Open footer submenu - cy.get('.ui-header.level-1.mobile-wizard.ui-widget') - .contains('Footer') + helper.selectItemByContent('.ui-header.level-1.mobile-wizard.ui-widget', 'Footer') .click(); // Insert footer for All - cy.get('.ui-content.level-1.mobile-wizard[title~="Footer"] .ui-header.level-2.mobile-wizard.ui-widget .menu-entry-no-icon') - .contains('All') + helper.selectItemByContent('.ui-content.level-1.mobile-wizard[title~="Footer"] .ui-header.level-2.mobile-wizard.ui-widget .menu-entry-no-icon', 'All') .click(); // Check that the cursor was moved @@ -244,8 +236,7 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Insert footnote - cy.get('.menu-entry-with-icon') - .contains('Footnote') + helper.selectItemByContent('.menu-entry-with-icon', 'Footnote') .click(); // Check that the cursor was moved @@ -275,8 +266,7 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Insert endnote - cy.get('.menu-entry-with-icon') - .contains('Endnote') + helper.selectItemByContent('.menu-entry-with-icon', 'Endnote') .click(); // Check that the cursor was moved @@ -305,9 +295,8 @@ describe('Insert objects via insertion wizard.', function() { cy.get('#mobile-wizard') .should('be.visible'); - // Insert endnote - cy.get('.menu-entry-with-icon') - .contains('Page Break') + // Insert page break + helper.selectItemByContent('.menu-entry-with-icon', 'Page Break') .click(); // Check that the cursor was moved @@ -337,8 +326,7 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Column Break') + helper.selectItemByContent('.menu-entry-with-icon', 'Column Break') .click(); // Check that the cursor was moved @@ -359,8 +347,7 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Open hyperlink dialog - cy.get('.menu-entry-with-icon') - .contains('Hyperlink...') + helper.selectItemByContent('.menu-entry-with-icon', 'Hyperlink...') .click(); // Dialog is opened @@ -380,7 +367,7 @@ describe('Insert objects via insertion wizard.', function() { writerHelper.copyTextToClipboard(); cy.get('#copy-paste-container p') - .contains('some text'); + .should('have.text', '\nsome text'); cy.get('#copy-paste-container p a') .should('have.attr', 'href', 'http://www.something.com/'); @@ -394,8 +381,7 @@ describe('Insert objects via insertion wizard.', function() { .should('be.visible'); // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Shape') + helper.selectItemByContent('.menu-entry-with-icon', 'Shape') .click(); cy.get('.col.w2ui-icon.basicshapes_rectangle'). diff --git a/cypress_test/integration_tests/mobile/writer/mobile_wizard_state_spec.js b/cypress_test/integration_tests/mobile/writer/mobile_wizard_state_spec.js index 741ce3e47..9b7ec28fc 100644 --- a/cypress_test/integration_tests/mobile/writer/mobile_wizard_state_spec.js +++ b/cypress_test/integration_tests/mobile/writer/mobile_wizard_state_spec.js @@ -34,8 +34,8 @@ describe('Mobile wizard state tests', function() { // Open hamburger menu mobileHelper.openHamburgerMenu(); - cy.get('.ui-header.level-0.mobile-wizard.ui-widget .menu-entry-with-icon') - .contains('About'); + helper.selectItemByContent('.ui-header.level-0.mobile-wizard.ui-widget .menu-entry-with-icon', 'About') + .should('be.visible'); // Close hamburger menu mobileHelper.closeHamburgerMenu(); @@ -53,8 +53,8 @@ describe('Mobile wizard state tests', function() { // Open context wizard by right click on document mobileHelper.longPressOnDocument(40, 40); - cy.get('.ui-header.level-0.mobile-wizard.ui-widget .menu-entry-with-icon') - .contains('Paste'); + helper.selectItemByContent('.ui-header.level-0.mobile-wizard.ui-widget .menu-entry-with-icon', 'Paste') + .should('be.visible'); // TODO: fix this bug //cy.get('#tb_actionbar_item_mobile_wizard table') diff --git a/cypress_test/integration_tests/mobile/writer/shape_properties_spec.js b/cypress_test/integration_tests/mobile/writer/shape_properties_spec.js index 7b744bea6..5695d293e 100644 --- a/cypress_test/integration_tests/mobile/writer/shape_properties_spec.js +++ b/cypress_test/integration_tests/mobile/writer/shape_properties_spec.js @@ -28,8 +28,7 @@ describe('Change shape properties via mobile wizard.', function() { .should('be.visible'); // Do insertion - cy.get('.menu-entry-with-icon') - .contains('Shape') + helper.selectItemByContent('.menu-entry-with-icon', 'Shape') .click(); cy.get('.basicshapes_right-triangle'). @@ -230,8 +229,7 @@ describe('Change shape properties via mobile wizard.', function() { cy.get('#linestyle') .click(); - cy.get('.ui-combobox-text') - .contains('Dashed') + helper.selectItemByContent('.ui-combobox-text', 'Dashed') .click(); triggerNewSVG(); diff --git a/cypress_test/integration_tests/mobile/writer/spellchecking_spec.js b/cypress_test/integration_tests/mobile/writer/spellchecking_spec.js index 8ac815018..0ea024302 100644 --- a/cypress_test/integration_tests/mobile/writer/spellchecking_spec.js +++ b/cypress_test/integration_tests/mobile/writer/spellchecking_spec.js @@ -50,8 +50,7 @@ describe('Spell checking menu.', function() { it('Apply suggestion.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('hello') + helper.selectItemByContent('.context-menu-link', 'hello') .click(); writerHelper.copyTextToClipboard(); @@ -66,88 +65,79 @@ describe('Spell checking menu.', function() { it('Ignore one.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Ignore') + helper.selectItemByContent('.context-menu-link', 'Ignore') .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste'); }); it('Ignore all.', function() { openContextMenu(); - cy.get('.context-menu-link') - .contains('Ignore All') + helper.selectItemByContent('.context-menu-link', 'Ignore\u00a0All') .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('Paste'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); it('Check language status for selection.', function() { openContextMenu(); - cy.get('.menu-entry-with-icon') - .contains('Set Language for Selection') + helper.selectItemByContent('.menu-entry-with-icon', 'Set Language for Selection') .click(); // English is selected - cy.get('.menu-entry-checked') - .contains('English (USA)'); + helper.selectItemByContent('.ui-content[title="Set Language for Selection"] .menu-entry-checked', 'English\u00a0(USA)') + .should('be.visible'); }); it('Set None Language for selection.', function() { openContextMenu(); - cy.get('.menu-entry-with-icon') - .contains('Set Language for Selection') + helper.selectItemByContent('.menu-entry-with-icon', 'Set Language for Selection') .click(); - // English is selected - cy.get('.menu-entry-checked') - .contains('English (USA)'); + helper.selectItemByContent('.ui-content[title="Set Language for Selection"] .menu-entry-with-icon', 'None\u00a0(Do not check spelling)') + .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('None (Do not check spelling)'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); it('Check language status for paragraph.', function() { openContextMenu(); - cy.get('.menu-entry-with-icon') - .contains('Set Language for Paragraph') + helper.selectItemByContent('.menu-entry-with-icon', 'Set Language for Paragraph') .click(); // English is selected - cy.get('.menu-entry-checked') - .contains('English (USA)'); + helper.selectItemByContent('.ui-content[title="Set Language for Paragraph"] .menu-entry-checked', 'English\u00a0(USA)') + .should('be.visible'); }); it('Set None Language for paragraph.', function() { openContextMenu(); - cy.get('.menu-entry-with-icon') - .contains('Set Language for Paragraph') + helper.selectItemByContent('.menu-entry-with-icon', 'Set Language for Paragraph') .click(); - // English is selected - cy.get('.menu-entry-checked') - .contains('English (USA)'); + helper.selectItemByContent('.ui-content[title="Set Language for Paragraph"] .menu-entry-with-icon', 'None\u00a0(Do not check spelling)') + .click(); openContextMenu(); // We don't get the spell check context menu any more - cy.get('.context-menu-link') - .contains('None (Do not check spelling)'); + helper.selectItemByContent('.context-menu-link', 'Paste') + .should('be.visible'); }); }); diff --git a/cypress_test/integration_tests/mobile/writer/toolbar_spec.js b/cypress_test/integration_tests/mobile/writer/toolbar_spec.js index 4453abcf7..a71f84c17 100644 --- a/cypress_test/integration_tests/mobile/writer/toolbar_spec.js +++ b/cypress_test/integration_tests/mobile/writer/toolbar_spec.js @@ -177,7 +177,7 @@ describe('Toolbar tests', function() { .should('be.visible'); // Close the dialog - cy.contains('Cancel') + cy.get('.vex-dialog-button-secondary') .click(); cy.get('.loleaflet-annotation-table') diff --git a/cypress_test/integration_tests/mobile/writer/writer_helper.js b/cypress_test/integration_tests/mobile/writer/writer_helper.js index 6bed4eb38..4a9c0382d 100644 --- a/cypress_test/integration_tests/mobile/writer/writer_helper.js +++ b/cypress_test/integration_tests/mobile/writer/writer_helper.js @@ -1,6 +1,7 @@ /* global cy expect require*/ var mobileHelper = require('../../common/mobile_helper'); +var helper = require('../../common/helper'); function copyTextToClipboard() { cy.log('Copying text to clipboard - start.'); @@ -57,20 +58,13 @@ function selectAllMobile() { // Open hamburger menu mobileHelper.openHamburgerMenu(); - cy.get('#mobile-wizard') - .should('be.visible', {timeout : 10000}); // Open edit menu - cy.get('.ui-header.level-0 .menu-entry-with-icon') - .contains('Edit') + helper.selectItemByContent('.ui-header.level-0 .menu-entry-with-icon', 'Edit') .click(); - cy.get('.ui-header.level-1 .menu-entry-with-icon') - .should('be.visible'); - // Do the selection - cy.get('.ui-header.level-1 .menu-entry-with-icon') - .contains('Select All') + helper.selectItemByContent('.ui-header.level-1 .menu-entry-with-icon', 'Select All') .click(); cy.get('.leaflet-marker-icon') .should('exist'); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits