diff --git a/cypress/integration/origin-browse.spec.js b/cypress/integration/origin-browse.spec.js new file mode 100644 index 00000000..30f4b02a --- /dev/null +++ b/cypress/integration/origin-browse.spec.js @@ -0,0 +1,87 @@ +/** + * Copyright (C) 2020 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 + */ + +describe('Test origin browse', function() { + beforeEach(function() { + const url = `${this.Urls.browse_origin()}?origin_url=${this.origin[1].url}`; + cy.visit(url); + }); + + it('should have code tab active by default', function() { + cy.get('#swh-browse-code-nav-link') + .should('have.class', 'active'); + }); + + it('should load branches view when clicking on the Branches tab', function() { + cy.get('#swh-browse-snapshot-branches-nav-link') + .click(); + + cy.location('pathname') + .should('eq', this.Urls.browse_origin_branches()); + + cy.location('search') + .should('eq', `?origin_url=${this.origin[1].url}`); + + cy.get('#swh-browse-snapshot-branches-nav-link') + .should('have.class', 'active'); + }); + + it('should load releases view when clicking on the Releases tab', function() { + cy.get('#swh-browse-snapshot-releases-nav-link') + .click(); + + cy.location('pathname') + .should('eq', this.Urls.browse_origin_releases()); + + cy.location('search') + .should('eq', `?origin_url=${this.origin[1].url}`); + + cy.get('#swh-browse-snapshot-releases-nav-link') + .should('have.class', 'active'); + }); + + it('should load visits view when clicking on the Visits tab', function() { + cy.get('#swh-browse-origin-visits-nav-link') + .click(); + + cy.location('pathname') + .should('eq', this.Urls.browse_origin_visits()); + + cy.location('search') + .should('eq', `?origin_url=${this.origin[1].url}`); + + cy.get('#swh-browse-origin-visits-nav-link') + .should('have.class', 'active'); + }); + + it('should load code view when clicking on the Code tab', function() { + cy.get('#swh-browse-origin-visits-nav-link') + .click(); + + cy.get('#swh-browse-code-nav-link') + .click(); + + cy.location('pathname') + .should('eq', this.Urls.browse_origin_directory()); + + cy.location('search') + .should('eq', `?origin_url=${this.origin[1].url}`); + + cy.get('#swh-browse-code-nav-link') + .should('have.class', 'active'); + + }); + + it('should have Releases tab link disabled when there is no releases', function() { + const url = `${this.Urls.browse_origin()}?origin_url=${this.origin[0].url}`; + cy.visit(url); + + cy.get('#swh-browse-snapshot-releases-nav-link') + .should('have.class', 'disabled'); + }); + +}); diff --git a/swh/web/assets/src/bundles/browse/browse-utils.js b/swh/web/assets/src/bundles/browse/browse-utils.js index 0dd6f8fa..a7bb7ca9 100644 --- a/swh/web/assets/src/bundles/browse/browse-utils.js +++ b/swh/web/assets/src/bundles/browse/browse-utils.js @@ -1,72 +1,86 @@ /** - * Copyright (C) 2018-2019 The Software Heritage developers + * Copyright (C) 2018-2020 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 */ import {BREAKPOINT_SM} from 'utils/constants'; $(document).ready(() => { $('.dropdown-submenu a.dropdown-item').on('click', e => { $(e.target).next('div').toggle(); if ($(e.target).next('div').css('display') !== 'none') { $(e.target).focus(); } else { $(e.target).blur(); } e.stopPropagation(); e.preventDefault(); }); $('.swh-popover-toggler').popover({ boundary: 'viewport', container: 'body', html: true, placement: function() { const width = $(window).width(); if (width < BREAKPOINT_SM) { return 'top'; } else { return 'right'; } }, template: `