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

Reply via email to