Page MenuHomeSoftware Heritage

guided-tour.spec.js
No OneTemporary

guided-tour.spec.js

/**
* Copyright (C) 2021 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('Guided Tour Tests', function() {
// utility function to traverse all guided tour steps in a page
const clickNextStepButtons = (stopAtTitle = null) => {
cy.get('.introjs-nextbutton').then($button => {
const buttonText = $button.text();
const headerText = $button.parent().siblings('.introjs-tooltip-header').text();
if (buttonText === 'Next' && headerText.slice(0, -1) !== stopAtTitle) {
cy.get('.introjs-nextbutton')
.click({force: true})
.then(() => {
cy.get('.introjs-tooltip').should('be.visible');
clickNextStepButtons(stopAtTitle);
});
}
});
};
it('should start UI guided tour when clicking on help button', function() {
cy.visit('/');
cy.get('.swh-help-link')
.click();
cy.get('.introjs-tooltip')
.should('exist');
});
it('should change guided tour page after current page steps', function() {
cy.visit('/');
cy.get('.swh-help-link')
.click();
cy.url().then(url => {
clickNextStepButtons();
cy.get('.introjs-nextbutton')
.should('have.text', 'Next page')
.click();
cy.url().should('not.eq', url);
});
});
it('should automatically open SWHIDs tab on second page of the guided tour', function() {
const guidedTourPageIndex = 1;
cy.visit('/').window().then(win => {
const guidedTour = win.swh.guided_tour.getGuidedTour();
// jump to third guided tour page
cy.visit(guidedTour[guidedTourPageIndex].url);
cy.window().then(win => {
// SWHIDs tab should be closed when tour begins
cy.get('.ui-slideouttab-open').should('not.exist');
// init guided tour on the page
win.swh.guided_tour.initGuidedTour(guidedTourPageIndex);
clickNextStepButtons();
// SWHIDs tab should be opened when tour begins
cy.get('.ui-slideouttab-open').should('exist');
});
});
});
it('should stay at step while line numbers not clicked on content view tour', function() {
const guidedTourPageIndex = 2;
// jump to third guided tour page
cy.visit('/').window().then(win => {
const guidedTour = win.swh.guided_tour.getGuidedTour();
cy.visit(guidedTour[guidedTourPageIndex].url);
cy.window().then(win => {
// init guided tour on the page
win.swh.guided_tour.initGuidedTour(guidedTourPageIndex);
clickNextStepButtons('Highlight a source code line');
cy.get('.introjs-tooltip-header').then($header => {
const headerText = $header.text();
// user did not click yet on line numbers and should stay
// blocked on first step of the tour
cy.get('.introjs-nextbutton')
.click();
cy.get('.introjs-tooltip-header')
.should('have.text', headerText);
// click on line numbers
cy.get('.hljs-ln-numbers[data-line-number="11"]')
.click();
// check move to next step is allowed
cy.get('.introjs-nextbutton')
.click();
cy.get('.introjs-tooltip-header')
.should('not.have.text', headerText);
});
cy.get('.introjs-tooltip-header').then($header => {
const headerText = $header.text();
// user did not click yet on line numbers and should stay
// blocked on first step of the tour
cy.get('.introjs-nextbutton')
.click();
cy.get('.introjs-tooltip-header')
.should('have.text', headerText);
// click on line numbers
cy.get('.hljs-ln-numbers[data-line-number="17"]')
.click({shiftKey: true});
// check move to next step is allowed
cy.get('.introjs-nextbutton')
.click();
cy.get('.introjs-tooltip-header')
.should('not.have.text', headerText);
});
});
});
});
});

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 4, 12:58 PM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3296045

Event Timeline