diff --git a/cypress/integration/webapp.spec.js b/cypress/integration/webapp.spec.js new file mode 100644 --- /dev/null +++ b/cypress/integration/webapp.spec.js @@ -0,0 +1,59 @@ +/** + * 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('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); + }) + }) +}) + +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'); + }) + }) +})