86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
/* global cy */
|
||
const selectors = {
|
||
heading: "[data-test-label='landing-header']",
|
||
callToAction: "[data-test-label='landing-big-cta']",
|
||
certifications: "[data-test-label='certifications']",
|
||
testimonials: "[data-test-label='testimonial-cards']",
|
||
landingPageImage: '.landing-page-image'
|
||
};
|
||
|
||
const certifications = [
|
||
'Responsive Web Design',
|
||
'JavaScript Algorithms and Data Structures',
|
||
'Front End Libraries',
|
||
'Data Visualization',
|
||
'APIs and Microservices',
|
||
'Quality Assurance',
|
||
'Scientific Computing with Python',
|
||
'Data Analysis with Python',
|
||
'Information Security',
|
||
'Machine Learning with Python'
|
||
];
|
||
|
||
describe('Landing page', () => {
|
||
it('Should render', () => {
|
||
cy.visit('/');
|
||
cy.title().should(
|
||
'eq',
|
||
'Learn to Code for Free – Coding Courses for Busy People'
|
||
);
|
||
cy.contains(selectors.callToAction, "Get started (it's free)");
|
||
cy.get(selectors.callToAction).should('have.length', 2);
|
||
});
|
||
|
||
it('Has visible header and sub-header', () => {
|
||
cy.contains(selectors.heading, 'Learn to code at home.');
|
||
cy.contains('Build projects.').should('be.visible');
|
||
cy.contains('Earn certifications.').should('be.visible');
|
||
|
||
cy.contains(
|
||
'Since 2014, more than 40,000 freeCodeCamp.org ' +
|
||
'graduates have gotten jobs at tech companies including:'
|
||
).should('be.visible');
|
||
});
|
||
|
||
it('Has 5 brand logos', () => {
|
||
cy.get('.logo-row')
|
||
.children()
|
||
.its('length')
|
||
.should('eq', 5);
|
||
});
|
||
|
||
it('Has `as seens as` section', () => {
|
||
cy.contains('Build projects.').should('be.visible');
|
||
cy.get('.big-heading')
|
||
.siblings()
|
||
.get('svg');
|
||
});
|
||
|
||
it('Has a visible large image on large viewports', function() {
|
||
cy.viewport(1200, 660)
|
||
.get(selectors.landingPageImage)
|
||
.should('be.visible');
|
||
|
||
cy.viewport(1199, 660)
|
||
.get(selectors.landingPageImage)
|
||
.should('not.exist');
|
||
});
|
||
|
||
it('Has links to all the certifications', function() {
|
||
cy.get(selectors.certifications)
|
||
.children()
|
||
.its('length')
|
||
.should('eq', 10);
|
||
cy.wrap(certifications).each(cert => {
|
||
cy.get(selectors.certifications).contains(cert);
|
||
});
|
||
});
|
||
|
||
it('Has 3 testimonial cards', function() {
|
||
cy.get(selectors.testimonials)
|
||
.children()
|
||
.its('length')
|
||
.should('eq', 3);
|
||
});
|
||
});
|