diff --git a/cypress.json b/cypress.json --- a/cypress.json +++ b/cypress.json @@ -1,4 +1,6 @@ { "baseUrl": "http://localhost:5004", - "video": false + "video": false, + "viewportWidth": 1920, + "viewportHeight": 1080 } diff --git a/cypress/integration/back-to-top.spec.js b/cypress/integration/back-to-top.spec.js new file mode 100644 --- /dev/null +++ b/cypress/integration/back-to-top.spec.js @@ -0,0 +1,34 @@ +/** + * Copyright (C) 2019 The Software Heritage developers + * See the AUTHORS file at the top-level directory of this distribution + * License: GNU Affero General Public License version 3, or any later version + * See top-level LICENSE file for more information + */ + +const url = 'api/' + +describe('Back-to-top button tests', function() { + beforeEach(function () { + cy.visit(url); + }) + + it('should be hidden when on top', function() { + cy.get('#back-to-top').should('not.be.visible'); + }) + + it('should be visible when scrolled down', function() { + cy.scrollTo('bottom') + .get('#back-to-top') + .should('be.visible'); + }) + + it('should scroll to top when clicked', function() { + cy.scrollTo('bottom') + .get('#back-to-top') + .click() + .window() + .then((window) => { + assert.equal(window.scrollY, 0); + }) + }) +}) diff --git a/cypress/integration/sidebar.spec.js b/cypress/integration/sidebar.spec.js new file mode 100644 --- /dev/null +++ b/cypress/integration/sidebar.spec.js @@ -0,0 +1,56 @@ +/** + * Copyright (C) 2019 The Software Heritage developers + * See the AUTHORS file at the top-level directory of this distribution + * License: GNU Affero General Public License version 3, or any later version + * See top-level LICENSE file for more information + */ + +const url = '/' + +describe('Sidebar tests', function() { + beforeEach(function () { + cy.visit(url); + }) + + it('should toggle sidebar when swh-push-menu is clicked', function() { + cy.get('.swh-push-menu') + .click() + .then(() => { + cy.get('body') + .should('have.class', 'sidebar-collapse') + .get('.nav-link > p') + .should('have.css', 'opacity', '0'); + }) + .get('.swh-push-menu') + .click() + .then(() => { + cy.get('body') + .should('have.class', 'sidebar-open') + .get('.nav-link > p') + .should('not.have.css', 'opacity', '0'); + }) + }) + + it('should have less width when collapsed compared to open', function() { + let collapsedWidth, expandedWidth; + cy.get('.swh-push-menu') + .click() + .wait(250) + .get('.swh-sidebar') + .should('have.css', 'width') + .then((width) => { + collapsedWidth = parseInt(width); + }) + .get('.swh-push-menu') + .click() + .wait(250) + .get('.swh-sidebar') + .should('have.css', 'width') + .then((width) => { + expandedWidth = parseInt(width); + }) + .then(() => { + assert.isBelow(collapsedWidth, expandedWidth); + }) + }) +})