]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix(cypress): Show and hide columns 39682/head
authorChristopher Ng <chrng8@gmail.com>
Wed, 2 Aug 2023 18:38:48 +0000 (11:38 -0700)
committerChristopher Ng <chrng8@gmail.com>
Wed, 9 Aug 2023 00:20:34 +0000 (17:20 -0700)
Signed-off-by: Christopher Ng <chrng8@gmail.com>
cypress/e2e/settings/usersUtils.ts [new file with mode: 0644]
cypress/e2e/settings/users_columns.cy.ts

diff --git a/cypress/e2e/settings/usersUtils.ts b/cypress/e2e/settings/usersUtils.ts
new file mode 100644 (file)
index 0000000..60ca42d
--- /dev/null
@@ -0,0 +1,33 @@
+/**
+ * @copyright 2023 Christopher Ng <chrng8@gmail.com>
+ *
+ * @author Christopher Ng <chrng8@gmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * Assert that `element` does not exist or is not visible
+ *
+ * Useful in cases such as when NcModal is opened/closed rapidly
+ */
+export function assertNotExistOrNotVisible(element: JQuery<HTMLElement>) {
+       const doesNotExist = element.length === 0
+       const isNotVisible = !element.is(':visible')
+
+       expect(doesNotExist || isNotVisible, 'does not exist or is not visible').to.be.true
+}
index 84222cc7477ef03320035c47babbbf021491e514..67363fb578a41425bbd4349018e8785549a92cb7 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 import { User } from '@nextcloud/cypress'
+import { assertNotExistOrNotVisible } from './usersUtils.js'
 
 const admin = new User('admin', 'admin')
 
@@ -43,7 +44,7 @@ describe('Settings: Show and hide columns', function() {
                        // close the settings dialog
                        cy.get('button.modal-container__close').click()
                })
-               cy.waitUntil(() => cy.get('.modal-container').should('not.be.visible'))
+               cy.waitUntil(() => cy.get('.modal-container').should(el => assertNotExistOrNotVisible(el)))
        })
 
        it('Can show a column', function() {
@@ -68,7 +69,7 @@ describe('Settings: Show and hide columns', function() {
                        // close the settings dialog
                        cy.get('button.modal-container__close').click()
                })
-               cy.waitUntil(() => cy.get('.modal-container').should('not.be.visible'))
+               cy.waitUntil(() => cy.get('.modal-container').should(el => assertNotExistOrNotVisible(el)))
 
                // see that the language column is in the header
                cy.get(`.user-list__header tr`).within(() => {
@@ -103,7 +104,7 @@ describe('Settings: Show and hide columns', function() {
                        // close the settings dialog
                        cy.get('button.modal-container__close').click()
                })
-               cy.waitUntil(() => cy.get('.modal-container').should('not.be.visible'))
+               cy.waitUntil(() => cy.get('.modal-container').should(el => assertNotExistOrNotVisible(el)))
 
                // see that the last login column is not in the header
                cy.get(`.user-list__header tr`).within(() => {