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

Reply via email to