[Libreoffice-commits] online.git: cypress_test/data cypress_test/integration_tests cypress_test/Makefile.am

Tamás Zolnai (via logerrit) logerrit at kemper.freedesktop.org
Thu Jul 23 15:29:23 UTC 2020


 cypress_test/Makefile.am                                        |   47 +++++++++-
 cypress_test/data/multiuser/userlist.odt                        |binary
 cypress_test/integration_tests/common/helper.js                 |    1 
 cypress_test/integration_tests/multiuser/userlist_user1_spec.js |   41 ++++++++
 cypress_test/integration_tests/multiuser/userlist_user2_spec.js |   32 ++++++
 5 files changed, 120 insertions(+), 1 deletion(-)

New commits:
commit 514aca9e0145e2dfda4b1cc35f526bdc00d3aa61
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Fri Jul 17 14:03:33 2020 +0200
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Thu Jul 23 17:29:03 2020 +0200

    cypress: multi-user test case.
    
    Change-Id: If2ee00c1e43b3cd854b83c762b74b2b8fee6d821
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99073
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index a17cfd7ee..39145115b 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -27,6 +27,11 @@ MOBILE_DATA_FOLDER = $(abs_srcdir)/data/mobile/
 MOBILE_WORKDIR = $(abs_builddir)/workdir/mobile/
 MOBILE_TRACK_FOLDER=$(abs_builddir)/workdir/track/mobile
 
+MULTIUSER_TEST_FOLDER = $(abs_srcdir)/integration_tests/multiuser
+MULTIUSER_DATA_FOLDER = $(abs_srcdir)/data/multiuser/
+MULTIUSER_WORKDIR = $(abs_builddir)/workdir/multiuser/
+MULTIUSER_TRACK_FOLDER=$(abs_builddir)/workdir/track/multiuser
+
 ALLOWED_PORTS = $(shell seq 9900 1 9980)
 KILL_COMMAND=pkill -F $(PID_FILE) || pkill --signal SIGKILL -F $(PID_FILE)
 PARALLEL_BUILD = $(findstring -j,$(MAKEFLAGS))
@@ -53,16 +58,22 @@ MOBILE_TEST_FILES=$(subst $(MOBILE_TEST_FOLDER)/,,$(wildcard $(MOBILE_TEST_FOLDE
 
 DEKSTOP_TEST_FILES=$(subst $(DESKTOP_TEST_FOLDER)/,,$(wildcard $(DESKTOP_TEST_FOLDER)/*_spec.js) $(wildcard $(DESKTOP_TEST_FOLDER)/*/*_spec.js))
 
+MULTIUSER_TEST_FILES= $(subst $(MULTIUSER_TEST_FOLDER)/,,$(wildcard $(MULTIUSER_TEST_FOLDER)/*_spec.js) $(wildcard $(MULTIUSER_TEST_FOLDER)/*/*_spec.js))
+
+
 MOBILE_TEST_FILES_DONE= \
 	$(foreach test_file,$(MOBILE_TEST_FILES),$(MOBILE_TRACK_FOLDER)/$(test_file).done)
 
 DESKTOP_TEST_FILES_DONE= \
 	$(foreach test_file,$(DEKSTOP_TEST_FILES),$(DESKTOP_TRACK_FOLDER)/$(test_file).done)
 
+MULTIUSER_TEST_FILES_DONE= \
+	$(foreach test_file,$(MULTIUSER_TEST_FILES),$(MULTIUSER_TRACK_FOLDER)/$(test_file).done)
+
 check-local: do-check
 	$(if $(wildcard $(ERROR_LOG)),$(error CypressError: some tests failed!))
 
-do-check: $(DESKTOP_TEST_FILES_DONE) $(MOBILE_TEST_FILES_DONE)
+do-check: $(DESKTOP_TEST_FILES_DONE) $(MOBILE_TEST_FILES_DONE) $(MULTIUSER_TEST_FILES_DONE)
 	@$(KILL_COMMAND) || true
 	$(if $(HEADLESS_BUILD), at pkill Xvfb,)
 	$(if $(wildcard $(ERROR_LOG)), at cat $(ERROR_LOG))
@@ -93,6 +104,13 @@ $(DESKTOP_TEST_FILES_DONE): $(PID_FILE)
 		@$(foreach done_file,$(DESKTOP_TEST_FILES_DONE),mkdir -p $(dir $(done_file)) && touch $(done_file) &&) true\
 	)
 
+# Multi-user tests are run only during parallel build.
+$(MULTIUSER_TRACK_FOLDER)/userlist_user%_spec.js.done: $(PID_FILE) $(MOBILE_TEST_FILES_DONE)
+	$(if $(PARALLEL_BUILD),\
+		$(call run_multiuser_tests,$(subst $(MULTIUSER_TRACK_FOLDER)/,,$(basename $@)),$(basename $@).log)\
+		,)
+	@mkdir -p $(dir $@) && touch $@
+
 check-desktop: @JAILS_PATH@ $(NODE_BINS)
 	$(call run_JS_error_check)
 	$(call start_loolwsd)
@@ -189,6 +207,10 @@ MOBILE_CONFIG = \
 	--config integrationFolder=$(MOBILE_TEST_FOLDER),supportFile=$(SUPPORT_FILE),userAgent=$(MOBILE_USER_AGENT) \
 	--env DATA_FOLDER=$(MOBILE_DATA_FOLDER),WORKDIR=$(MOBILE_WORKDIR),WSD_VERSION_HASH=$(WSD_VERSION_HASH),SERVER_PORT=$(FREE_PORT),LO_CORE_VERSION="$(CORE_VERSION)"
 
+MULTIUSER_CONFIG = \
+	--config integrationFolder=$(MULTIUSER_TEST_FOLDER),supportFile=$(SUPPORT_FILE),userAgent=$(DESKTOP_USER_AGENT),defaultCommandTimeout=30000 \
+	--env DATA_FOLDER=$(MULTIUSER_DATA_FOLDER),WORKDIR=$(MULTIUSER_WORKDIR),WSD_VERSION_HASH=$(WSD_VERSION_HASH),SERVER_PORT=$(FREE_PORT),LO_CORE_VERSION="$(CORE_VERSION)"
+
 define run_interactive_test
 	$(if $(2),\
 		$(CYPRESS_BINARY) run \
@@ -237,6 +259,19 @@ define run_mobile_tests
 	)
 endef
 
+define run_multiuser_tests
+	@echo "Running cypress multi-user test: $(1)"
+	@echo
+	$(eval RUN_COMMAND = \
+		$(CYPRESS_BINARY) run \
+			--browser $(CHROME) \
+			--headless \
+			$(MULTIUSER_CONFIG)$(if $(3),$(COMMA)$(3)) \
+			$(if $(1), --spec=$(abs_dir)/integration_tests/multiuser/$(1)) \
+			)
+	$(call execute_run_parallel_no_second_chance,$(RUN_COMMAND),$(2),desktop,$(1))
+endef
+
 ERROR_MATCHER = "Error:\|Command failed:\|Timed out retrying\|The error was:"
 
 define execute_run_parallel
@@ -257,6 +292,16 @@ define execute_run_parallel
 	fi;
 endef
 
+define execute_run_parallel_no_second_chance
+	@mkdir -p $(dir $(2)) && touch $(2) && \
+	echo "`echo $(1) && $(1)`" > $(2) 2>&1 && \
+	if [ -z `grep -o -m 1 $(ERROR_MATCHER) $(2)` ];\
+		then cat $(2);\
+		else cat $(2) >> $(ERROR_LOG) && \
+		     echo -e $(call error_output_string,$(3),$(4)) >> $(ERROR_LOG); \
+	fi;
+endef
+
 define error_output_string
 "\n\
 CypressError: a test failed, please do one of the following:\n\n\
diff --git a/cypress_test/data/multiuser/userlist.odt b/cypress_test/data/multiuser/userlist.odt
new file mode 100644
index 000000000..f7494e82f
Binary files /dev/null and b/cypress_test/data/multiuser/userlist.odt differ
diff --git a/cypress_test/integration_tests/common/helper.js b/cypress_test/integration_tests/common/helper.js
index c31ebd64a..2452e5956 100644
--- a/cypress_test/integration_tests/common/helper.js
+++ b/cypress_test/integration_tests/common/helper.js
@@ -409,3 +409,4 @@ module.exports.getLOVersion = getLOVersion;
 module.exports.imageShouldBeFullWhiteOrNot = imageShouldBeFullWhiteOrNot;
 module.exports.clickOnIdle = clickOnIdle;
 module.exports.inputOnIdle = inputOnIdle;
+module.exports.waitUntilIdle = waitUntilIdle;
diff --git a/cypress_test/integration_tests/multiuser/userlist_user1_spec.js b/cypress_test/integration_tests/multiuser/userlist_user1_spec.js
new file mode 100644
index 000000000..c40f4af9b
--- /dev/null
+++ b/cypress_test/integration_tests/multiuser/userlist_user1_spec.js
@@ -0,0 +1,41 @@
+/* global describe it cy beforeEach require afterEach */
+
+var helper = require('../common/helper');
+
+describe('Check user list with user-1.', function() {
+	var testFileName = 'userlist.odt';
+
+	beforeEach(function() {
+		helper.beforeAllDesktop(testFileName);
+	});
+
+	afterEach(function() {
+		helper.afterAll(testFileName);
+	});
+
+	it('Userlist visibility.', function() {
+		// user-2 loads the same document
+
+		cy.get('#tb_actionbar_item_userlist')
+			.should('be.visible');
+
+		cy.get('#tb_actionbar_item_userlist .w2ui-tb-caption')
+			.should('have.text', '2 users');
+
+		// Leave a comment for user-2, that we finished
+		cy.get('#menu-insert')
+			.click();
+
+		cy.get('#menu-insertcomment')
+			.click();
+
+		cy.get('.loleaflet-annotation-edit:nth-of-type(2) .loleaflet-annotation-textarea')
+			.type('Done');
+
+		helper.waitUntilIdle('#annotation-save');
+
+		cy.get('#annotation-save')
+			.click({force: true});
+	});
+
+});
diff --git a/cypress_test/integration_tests/multiuser/userlist_user2_spec.js b/cypress_test/integration_tests/multiuser/userlist_user2_spec.js
new file mode 100644
index 000000000..9a8de655e
--- /dev/null
+++ b/cypress_test/integration_tests/multiuser/userlist_user2_spec.js
@@ -0,0 +1,32 @@
+/* global describe it cy beforeEach require afterEach */
+
+var helper = require('../common/helper');
+
+describe('Check user list with user-2.', function() {
+	var testFileName = 'userlist.odt';
+
+	beforeEach(function() {
+		// Wait here, before loading the document.
+		// Opening two clients at the same time causes an issue.
+		cy.wait(5000);
+		helper.beforeAllDesktop(testFileName);
+	});
+
+	afterEach(function() {
+		helper.afterAll(testFileName);
+	});
+
+	it('Userlist visibility.', function() {
+		// user-1 loads the same document
+
+		cy.get('#tb_actionbar_item_userlist')
+			.should('be.visible');
+
+		cy.get('#tb_actionbar_item_userlist .w2ui-tb-caption')
+			.should('have.text', '2 users');
+
+		// user-1 adds a comment, so we can close this view
+		cy.get('.loleaflet-annotation-content-wrapper')
+			.should('exist');
+	});
+});


More information about the Libreoffice-commits mailing list