cypress_test/integration_tests/mobile/focus_spec.js | 240 +++++++++++++++++--- 1 file changed, 207 insertions(+), 33 deletions(-)
New commits: commit fe3d3e69988fd37831a12eab993247cdfc10dedc Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Mon Feb 10 16:08:31 2020 +0100 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Mon Feb 10 21:42:54 2020 +0100 cypress: mobile: Add some focus related tests (writer). Change-Id: Ibe2ce81cfea0c0d4bf9af584c54e5ee8c1e356f1 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88381 Tested-by: Tamás Zolnai <tamas.zol...@collabora.com> Reviewed-by: Tamás Zolnai <tamas.zol...@collabora.com> diff --git a/cypress_test/integration_tests/mobile/focus_spec.js b/cypress_test/integration_tests/mobile/focus_spec.js index e411b94c8..badb1e0ad 100644 --- a/cypress_test/integration_tests/mobile/focus_spec.js +++ b/cypress_test/integration_tests/mobile/focus_spec.js @@ -1,4 +1,4 @@ -/* global describe it cy beforeEach require afterEach*/ +/* global describe it cy beforeEach require afterEach expect*/ var helper = require('../common/helper'); @@ -11,17 +11,27 @@ describe('Focus tests', function() { helper.afterAll(); }); - it('Focus after document fully loaded.', function() { - // The document body should have the focus - cy.document().its('activeElement.tagName') - .should('be.eq', 'BODY'); - }); + it('Basic document focus.', function() { + // Click on edit button + cy.get('#mobile-edit-button').click(); + + cy.get('#tb_actionbar_item_mobile_wizard') + .should('not.have.class', 'disabled'); - it('Focus after closing a dialog.', function() { - // The document body has the focus first + // Body has the focus -> can't type in the document cy.document().its('activeElement.tagName') .should('be.eq', 'BODY'); + // Click in the document + cy.get('#document-container') + .click(); + + // Clipboard has the focus -> can type in the document + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + }); + + it('Focus with a vex dialog.', function() { // Click on edit button cy.get('#mobile-edit-button').click(); @@ -30,7 +40,8 @@ describe('Focus tests', function() { .should('not.have.class', 'disabled') .click(); - cy.get('.loleaflet-annotation-table').should('be.visible'); + cy.get('.loleaflet-annotation-table') + .should('be.visible'); // The dialog grabs the focus cy.document().its('activeElement.className') @@ -40,47 +51,78 @@ describe('Focus tests', function() { cy.contains('Cancel').click(); cy.get('.loleaflet-annotation-table').should('be.not.visible'); - // The document should have the focus again + // Body should have the focus again (no focus on document) cy.document().its('activeElement.tagName') .should('be.eq', 'BODY'); }); - it('Focus when using insertion mobile wizard.', function() { - // The document body has the focus first + it('Focus with opened mobile wizard.', function() { + // Click on edit button + cy.get('#mobile-edit-button').click(); + + // Click in the document + cy.get('#document-container') + .click(); + + // Clipboard has the focus -> can type in the document + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + + // Open mobile wizard + cy.get('#tb_actionbar_item_mobile_wizard') + .should('not.have.class', 'disabled') + .click(); + + cy.get('#mobile-wizard-content') + .should('not.be.empty'); + + // Body should have the focus (no focus on document) + cy.document().its('activeElement.tagName') + .should('be.eq', 'BODY'); + + // Close mobile wizard + cy.get('#tb_actionbar_item_mobile_wizard') + .click(); + + // No focus cy.document().its('activeElement.tagName') .should('be.eq', 'BODY'); + }); + it('Focus inside mobile wizard.', function() { // Click on edit button cy.get('#mobile-edit-button').click(); - // Open insertion mobile wizard - cy.get('#tb_actionbar_item_insertion_mobile_wizard') + // Open mobile wizard + cy.get('#tb_actionbar_item_mobile_wizard') .should('not.have.class', 'disabled') .click(); cy.get('#mobile-wizard-content') .should('not.be.empty'); - // This fails here: the document still has the focus - // The wizard changes the focus - //cy.document().its('activeElement.className') - // .should('be.eq', 'clipboard'); + // Open paragraph properties + cy.get('#Paragraph') + .click(); - // Close the mobile wizard - cy.get('#tb_actionbar_item_insertion_mobile_wizard').click(); - cy.get('#mobile-wizard').should('not.be.visible'); + cy.get('#aboveparaspacing .spinfield') + .should('have.attr', 'value', '0.0') + .click(); - // This fails here: the focus is not on the document body - // The document should have the focus again - //cy.document().its('activeElement.tagName') - // .should('be.eq', 'BODY'); - }); + // The spinfield should have the focus now. + cy.document().its('activeElement.className') + .should('be.eq', 'spinfield'); - it('Focus after insertion.', function() { - // The document body has the focus first + // Close mobile wizard + cy.get('#tb_actionbar_item_mobile_wizard') + .click(); + + // No focus cy.document().its('activeElement.tagName') .should('be.eq', 'BODY'); + }); + it('Focus after insertion.', function() { // Click on edit button cy.get('#mobile-edit-button').click(); @@ -100,11 +142,143 @@ describe('Focus tests', function() { // Insert a field cy.get('.ui-header.level-1.mobile-wizard.ui-widget .menu-entry-with-icon') .contains('Page Number').click(); - cy.get('#mobile-wizard').should('not.be.visible'); - // This fails here: the focus is not on the document body - // The document should have the focus again - //cy.document().its('activeElement.tagName') - // .should('be.eq', 'BODY'); + cy.get('#mobile-wizard') + .should('not.be.visible'); + + // After insertion the document gets the focus + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + }); + + it('Shape related focus.', function() { + // Click on edit button + cy.get('#mobile-edit-button').click(); + + // Open insertion mobile wizard + cy.get('#tb_actionbar_item_insertion_mobile_wizard') + .should('not.have.class', 'disabled') + .click(); + + cy.get('#mobile-wizard-content') + .should('not.be.empty'); + + // Do insertion + cy.get('.menu-entry-with-icon') + .contains('Shape') + .click(); + + cy.get('.col.w2ui-icon.basicshapes_rectangle'). + click(); + + // Check that the shape is there + cy.get('.leaflet-pane.leaflet-overlay-pane svg g') + .should('exist'); + + // One tap on the shape + cy.get('.leaflet-pane.leaflet-overlay-pane svg') + .then(function(svg) { + expect(svg[0].getBBox().width).to.be.greaterThan(0); + expect(svg[0].getBBox().height).to.be.greaterThan(0); + var posX = svg[0].getBBox().x + svg[0].getBBox().width / 2; + var posY = svg[0].getBBox().y + svg[0].getBBox().height / 2; + cy.get('#document-container') + .click(posX, posY); + }); + + // Document grabs the focus + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + + // Double tap on the shape + cy.get('.leaflet-pane.leaflet-overlay-pane svg') + .then(function(svg) { + expect(svg[0].getBBox().width).to.be.greaterThan(0); + expect(svg[0].getBBox().height).to.be.greaterThan(0); + var posX = svg[0].getBBox().x + svg[0].getBBox().width / 2; + var posY = svg[0].getBBox().y + svg[0].getBBox().height / 2; + cy.get('#document-container') + .dblclick(posX, posY); + }); + + // Document still has the focus + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + }); + + it('Focus with hamburger menu.', function() { + // Click on edit button + cy.get('#mobile-edit-button').click(); + + // Click in the document + cy.get('#document-container') + .click(); + + // Clipboard has the focus -> can type in the document + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + + // Open hamburger menu + cy.get('#toolbar-hamburger') + .click(); + + // No focus + cy.document().its('activeElement.tagName') + .should('be.eq', 'BODY'); + + // Close hamburger menu + cy.get('#toolbar-hamburger') + .click(); + + // No focus + cy.document().its('activeElement.tagName') + .should('be.eq', 'BODY'); + }); + + it('Focus after applying font change.', function() { + // Click on edit button + cy.get('#mobile-edit-button').click(); + + // Click in the document + cy.get('#document-container') + .click(); + + // Clipboard has the focus -> can type in the document + cy.document().its('activeElement.className') + .should('be.eq', 'clipboard'); + + // Open mobile wizard + cy.get('#tb_actionbar_item_mobile_wizard') + .should('not.have.class', 'disabled') + .click(); + + cy.get('#mobile-wizard-content') + .should('not.be.empty'); + + // No focus + cy.document().its('activeElement.tagName') + .should('be.eq', 'BODY'); + + // Apply bold + cy.get('#Bold') + .click(); + + cy.get('#Boldimg') + .should('have.class', 'selected'); + + // No focus + cy.document().its('activeElement.tagName') + .should('be.eq', 'BODY'); + + // Close mobile wizard + cy.get('#tb_actionbar_item_mobile_wizard') + .click(); + + cy.get('#tb_actionbar_item_mobile_wizard table') + .should('not.have.class', 'checked'); + + // No focus + cy.document().its('activeElement.tagName') + .should('be.eq', 'BODY'); }); }); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits