summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2020-09-22 16:51:23 +0200
committerTamás Zolnai <tamas.zolnai@collabora.com>2020-09-23 16:41:44 +0200
commit11b384b195992dbffc6bb5ec9eeb25f4630caa9c (patch)
tree8ea2d5b1dd25f9557a65ce5e8da7c2a75136278e
parentfb6157b65fe96e4966f9d47f6d43660bfbff2d94 (diff)
cypress: NC: test nextcloud specific features.
Change-Id: I52bc1709f29de1d69c2ae52c806bedad4eee8bc4 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/103254 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
-rw-r--r--cypress_test/data/mobile/writer/nextcloud.odtbin0 -> 8487 bytes
-rw-r--r--cypress_test/integration_tests/common/helper.js192
-rw-r--r--cypress_test/integration_tests/mobile/writer/nextcloud_spec.js170
-rw-r--r--cypress_test/plugins/blacklists.js5
-rw-r--r--cypress_test/plugins/index.js5
5 files changed, 319 insertions, 53 deletions
diff --git a/cypress_test/data/mobile/writer/nextcloud.odt b/cypress_test/data/mobile/writer/nextcloud.odt
new file mode 100644
index 000000000..f7494e82f
--- /dev/null
+++ b/cypress_test/data/mobile/writer/nextcloud.odt
Binary files differ
diff --git a/cypress_test/integration_tests/common/helper.js b/cypress_test/integration_tests/common/helper.js
index f748b9bde..b41cbdeff 100644
--- a/cypress_test/integration_tests/common/helper.js
+++ b/cypress_test/integration_tests/common/helper.js
@@ -59,7 +59,138 @@ function loadTestDocLocal(fileName, subFolder, noFileCopy) {
cy.log('Loading test document with a local build - end.');
}
-function loadTestDocNextcloud(fileName, subFolder) {
+function loadTestDocNextcloud(fileName, subFolder, subsequentLoad) {
+ cy.log('Loading test document with nextcloud - start.');
+ cy.log('Param - fileName: ' + fileName);
+ cy.log('Param - subFolder: ' + subFolder);
+ cy.log('Param - subsequentLoad: ' + subsequentLoad);
+
+ // Open local nextcloud installation
+ cy.visit('http://localhost/nextcloud');
+
+ if (subsequentLoad !== true) {
+ // Log in with cypress test user / password
+ cy.get('input#user')
+ .clear()
+ .type('cypress_test');
+
+ cy.get('input#password')
+ .clear()
+ .type('cypress_test');
+
+ cy.get('input#submit-form')
+ .click();
+
+ cy.get('.button.new')
+ .should('be.visible');
+
+ // Wait for free space calculation before uploading document
+ cy.get('#free_space')
+ .should('not.have.attr', 'value', '');
+
+ // Remove all files
+ cy.get('#fileList')
+ .then(function(filelist) {
+ if (filelist.find('tr').length !== 0) {
+ cy.waitUntil(function() {
+ cy.get('#fileList tr:nth-of-type(1) .action-menu.permanent')
+ .click();
+
+ cy.get('.menuitem.action.action-delete.permanent')
+ .click();
+
+ cy.get('#uploadprogressbar')
+ .should('not.be.visible');
+
+ return cy.get('#fileList')
+ .then(function(filelist) {
+ return filelist.find('tr').length === 0;
+ });
+ }, {timeout: 60000});
+ }
+ });
+ } else {
+ // Wait for free space calculation before uploading document
+ cy.get('#free_space')
+ .should('not.have.attr', 'value', '');
+ }
+
+ cy.get('tr[data-file=\'' + fileName + '\']')
+ .should('not.exist');
+
+ // Upload test document
+ var fileURI = '';
+ if (subFolder === undefined) {
+ fileURI += fileName;
+ } else {
+ fileURI += subFolder + '/' + fileName;
+ }
+ doIfOnDesktop(function() {
+ cy.get('input#file_upload_start')
+ .attachFile({ filePath: 'desktop/' + fileURI, encoding: 'binary' });
+ });
+ doIfOnMobile(function() {
+ cy.get('input#file_upload_start')
+ .attachFile({ filePath: 'mobile/' + fileURI, encoding: 'binary' });
+ });
+
+ cy.get('#uploadprogressbar')
+ .should('not.be.visible');
+
+ // Open test document
+ cy.get('tr[data-file=\'' + fileName + '\']')
+ .click();
+
+ cy.get('iframe#richdocumentsframe')
+ .should('be.visible', {timeout : Cypress.config('defaultCommandTimeout') * 2.0});
+
+ var getIframeBody = function(originalGet, level) {
+ if (level === 1) {
+ return cy.wrap(originalGet('iframe#richdocumentsframe'))
+ .its('0.contentDocument', {log: false}).should('exist')
+ .its('body', {log: false}).should('not.be.undefined')
+ .then(cy.wrap, {log: false});
+ } else if (level === 2) {
+ return cy.wrap(originalGet('iframe#richdocumentsframe'))
+ .its('0.contentDocument', {log: false}).should('exist')
+ .its('body', {log: false}).should('not.be.undefined')
+ .then(cy.wrap, {log: false})
+ .find('iframe#loleafletframe', {log: false})
+ .its('0.contentDocument', {log: false}).should('exist')
+ .its('body', {log: false}).should('not.be.undefined')
+ .then(cy.wrap, {log: false});
+ }
+ };
+
+ cy.get('iframe#richdocumentsframe')
+ .then(function() {
+ Cypress.env('IFRAME_LEVEL', '2');
+ });
+
+ Cypress.Commands.overwrite('get', function(originalFn, selector, options) {
+ var iFrameLevel = Cypress.env('IFRAME_LEVEL');
+ if ((iFrameLevel === '1' || iFrameLevel === '2') && !selector.startsWith('@'))
+ if (selector === 'body')
+ return getIframeBody(originalFn, parseInt(iFrameLevel));
+ else
+ return getIframeBody(originalFn, parseInt(iFrameLevel)).find(selector, options);
+ else
+ return originalFn(selector, options);
+ });
+
+ Cypress.Commands.overwrite('contains', function(originalFn, selector, content, options) {
+ if (Cypress.env('IFRAME_LEVEL') === '2')
+ return cy.get('#document-container').parent().wrap(originalFn(selector, content, options));
+ else
+ return originalFn(selector, content, options);
+ });
+
+ cy.wait(10000);
+
+ cy.log('Loading test document with nextcloud - end.');
+}
+
+function loadFileToNextCloud(fileName, subFolder) {
cy.log('Loading test document with nextcloud - start.');
cy.log('Param - fileName: ' + fileName);
cy.log('Param - subFolder: ' + subFolder);
@@ -86,7 +217,6 @@ function loadTestDocNextcloud(fileName, subFolder) {
cy.get('#free_space')
.should('not.have.attr', 'value', '');
- // Remove all files
cy.get('#fileList')
.then(function(filelist) {
if (filelist.find('tr').length !== 0) {
@@ -130,52 +260,11 @@ function loadTestDocNextcloud(fileName, subFolder) {
cy.get('#uploadprogressbar')
.should('not.be.visible');
- // Open test document
cy.get('tr[data-file=\'' + fileName + '\']')
- .click();
-
- cy.get('iframe#richdocumentsframe')
- .should('be.visible', {timeout : Cypress.config('defaultCommandTimeout') * 2.0});
-
- var getIframeBody = function(originalGet) {
- return cy.wrap(originalGet('iframe#richdocumentsframe'))
- .its('0.contentDocument', {log: false}).should('exist')
- .its('body', {log: false}).should('not.be.undefined')
- .then(cy.wrap, {log: false})
- .find('iframe#loleafletframe', {log: false})
- .its('0.contentDocument', {log: false}).should('exist')
- .its('body', {log: false}).should('not.be.undefined')
- .then(cy.wrap, {log: false});
- };
-
- cy.get('iframe#richdocumentsframe')
- .then(function() {
- Cypress.env('WITHIN_IFRAME', 'TRUE');
- });
-
- Cypress.Commands.overwrite('get', function(originalFn, selector, options) {
- if (Cypress.env('WITHIN_IFRAME') === 'TRUE' && !selector.startsWith('@'))
- if (selector === 'body')
- return getIframeBody(originalFn);
- else
- return getIframeBody(originalFn).find(selector, options);
- else
- return originalFn(selector, options);
- });
-
- Cypress.Commands.overwrite('contains', function(originalFn, selector, content, options) {
- if (Cypress.env('WITHIN_IFRAME') === 'TRUE')
- return cy.get('#document-container').parent().wrap(originalFn(selector, content, options));
- else
- return originalFn(selector, content, options);
- });
-
- cy.wait(10000);
-
- cy.log('Loading test document with nextcloud - end.');
+ .should('be.visible');
}
-function loadTestDoc(fileName, subFolder, noFileCopy) {
+function loadTestDoc(fileName, subFolder, noFileCopy, subsequentLoad) {
cy.log('Loading test document - start.');
cy.log('Param - fileName: ' + fileName);
cy.log('Param - subFolder: ' + subFolder);
@@ -186,7 +275,7 @@ function loadTestDoc(fileName, subFolder, noFileCopy) {
});
if (Cypress.env('INTEGRATION') === 'nextcloud') {
- loadTestDocNextcloud(fileName, subFolder);
+ loadTestDocNextcloud(fileName, subFolder, subsequentLoad);
} else {
loadTestDocLocal(fileName, subFolder, noFileCopy);
}
@@ -321,8 +410,8 @@ function matchClipboardText(regexp) {
});
}
-function beforeAll(fileName, subFolder, noFileCopy) {
- loadTestDoc(fileName, subFolder, noFileCopy);
+function beforeAll(fileName, subFolder, noFileCopy, subsequentLoad) {
+ loadTestDoc(fileName, subFolder, noFileCopy, subsequentLoad);
}
function afterAll(fileName) {
@@ -333,7 +422,7 @@ function afterAll(fileName) {
return;
if (Cypress.env('INTEGRATION') === 'nextcloud') {
- if (Cypress.env('WITHIN_IFRAME') === 'TRUE') {
+ if (Cypress.env('IFRAME_LEVEL') === '2') {
// Close the document
doIfOnMobile(function() {
cy.get('#tb_actionbar_item_closemobile')
@@ -346,7 +435,7 @@ function afterAll(fileName) {
.then(function(item) {
cy.wrap(item)
.click();
- Cypress.env('WITHIN_IFRAME', '');
+ Cypress.env('IFRAME_LEVEL', '');
});
});
doIfOnDesktop(function() {
@@ -354,7 +443,7 @@ function afterAll(fileName) {
.then(function(item) {
cy.wrap(item)
.click();
- Cypress.env('WITHIN_IFRAME', '');
+ Cypress.env('IFRAME_LEVEL', '');
});
});
@@ -774,3 +863,4 @@ module.exports.doIfOnMobile = doIfOnMobile;
module.exports.doIfOnDesktop = doIfOnDesktop;
module.exports.moveCursor = moveCursor;
module.exports.typeIntoDocument = typeIntoDocument;
+module.exports.loadFileToNextCloud = loadFileToNextCloud;
diff --git a/cypress_test/integration_tests/mobile/writer/nextcloud_spec.js b/cypress_test/integration_tests/mobile/writer/nextcloud_spec.js
new file mode 100644
index 000000000..8df27bd59
--- /dev/null
+++ b/cypress_test/integration_tests/mobile/writer/nextcloud_spec.js
@@ -0,0 +1,170 @@
+/* global describe it cy require afterEach Cypress */
+
+var helper = require('../../common/helper');
+var mobileHelper = require('../../common/mobile_helper');
+
+describe('Nextcloud specific tests.', function() {
+ var testFileName = 'nextcloud.odt';
+
+ afterEach(function() {
+ helper.afterAll(testFileName);
+ });
+
+ it('Insert image from storage.', function() {
+ helper.loadFileToNextCloud('image_to_insert.png', 'writer');
+
+ helper.beforeAll(testFileName, 'writer', undefined, true);
+
+ // Click on edit button
+ mobileHelper.enableEditingMobile();
+
+ mobileHelper.openInsertionWizard();
+
+ cy.get('.insertgraphicremote')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '');
+ cy.wrap(item)
+ .click();
+ });
+
+ cy.get('.oc-dialog')
+ .should('be.visible');
+
+ cy.get('tr[data-entryname=\'image_to_insert.png\']')
+ .click();
+
+ cy.get('.oc-dialog-buttonrow .primary')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '2');
+ cy.wrap(item)
+ .click();
+ });
+
+ cy.get('.leaflet-pane.leaflet-overlay-pane svg g.Graphic')
+ .should('exist');
+ });
+
+ it('Save as.', function() {
+ helper.beforeAll(testFileName, 'writer');
+
+ // Click on edit button
+ mobileHelper.enableEditingMobile();
+
+ mobileHelper.openHamburgerMenu();
+
+ cy.contains('.menu-entry-with-icon', 'File')
+ .click();
+
+ cy.contains('.menu-entry-with-icon', 'Save As...')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '1');
+ cy.wrap(item)
+ .click();
+ });
+
+ cy.get('.oc-dialog')
+ .should('be.visible');
+
+ cy.get('.oc-dialog input')
+ .clear()
+ .type('1' + testFileName);
+
+ cy.get('.oc-dialog-buttonrow .primary')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '2');
+ cy.wrap(item)
+ .click();
+ });
+
+ // Close the document
+ cy.get('#mobile-edit-button')
+ .should('be.visible');
+
+ cy.get('#tb_actionbar_item_closemobile')
+ .then(function(item) {
+ cy.wrap(item)
+ .click();
+ Cypress.env('IFRAME_LEVEL', '');
+ });
+
+ cy.get('tr[data-file=\'1' + testFileName + '\']')
+ .should('be.visible');
+
+ cy.get('tr[data-file=\'' + testFileName + '\']')
+ .should('be.visible');
+ });
+
+ it('Share.', function() {
+ helper.beforeAll(testFileName, 'writer');
+
+ // Click on edit button
+ mobileHelper.enableEditingMobile();
+
+ mobileHelper.openHamburgerMenu();
+
+ cy.contains('.menu-entry-with-icon', 'File')
+ .click();
+
+ cy.contains('.menu-entry-with-icon', 'Share...')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '');
+ cy.wrap(item)
+ .click();
+ });
+
+ cy.get('#app-sidebar')
+ .should('be.visible');
+
+ // issue here
+ //cy.get('section#sharing')
+ // .should('be.visible');
+
+ cy.get('.app-sidebar__close.icon-close')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '2');
+ cy.wrap(item)
+ .click();
+ });
+ });
+
+ it('Revision history.', function() {
+ helper.beforeAll(testFileName, 'writer');
+
+ // Click on edit button
+ mobileHelper.enableEditingMobile();
+
+ mobileHelper.openHamburgerMenu();
+
+ cy.contains('.menu-entry-with-icon', 'File')
+ .click();
+
+ cy.contains('.menu-entry-with-icon', 'See revision history')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '');
+ cy.wrap(item)
+ .click();
+ });
+
+ cy.get('#app-sidebar')
+ .should('be.visible');
+
+ cy.get('section#tab-versionsTabView')
+ .should('be.visible');
+
+ cy.get('.app-sidebar__close.icon-close')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '1');
+ cy.wrap(item)
+ .click();
+ });
+
+ // issue here
+ cy.get('#revViewerContainer .icon-close')
+ .then(function(item) {
+ Cypress.env('IFRAME_LEVEL', '2');
+ cy.wrap(item)
+ .click();
+ });
+ });
+});
+
diff --git a/cypress_test/plugins/blacklists.js b/cypress_test/plugins/blacklists.js
index cf2edb893..3fc54ba6b 100644
--- a/cypress_test/plugins/blacklists.js
+++ b/cypress_test/plugins/blacklists.js
@@ -163,6 +163,11 @@ var phpProxyBlackList = [
],
];
+var nextcloudOnlyList = [
+ ['mobile/writer/nextcloud_spec.js', []],
+];
+
module.exports.coreBlackLists = coreBlackLists;
module.exports.nextcloudBlackList = nextcloudBlackList;
+module.exports.nextcloudOnlyList = nextcloudOnlyList;
module.exports.phpProxyBlackList = phpProxyBlackList;
diff --git a/cypress_test/plugins/index.js b/cypress_test/plugins/index.js
index 4547a88ba..83eccb2b6 100644
--- a/cypress_test/plugins/index.js
+++ b/cypress_test/plugins/index.js
@@ -79,8 +79,9 @@ function pickTests(filename, foundTests, config) {
testsToRun = removeBlacklistedTest(filename, testsToRun, coreblackList);
if (process.env.CYPRESS_INTEGRATION === 'nextcloud') {
- var NCblackList = blacklists.nextcloudBlackList;
- testsToRun = removeBlacklistedTest(filename, testsToRun, NCblackList);
+ testsToRun = removeBlacklistedTest(filename, testsToRun, blacklists.nextcloudBlackList);
+ } else {
+ testsToRun = removeBlacklistedTest(filename, testsToRun, blacklists.nextcloudOnlyList);
}
if (process.env.CYPRESS_INTEGRATION === 'php-proxy') {