Gherkin workflows for desktop (#788)

* Add gherkin tests for page navigation links

- test that every page will load when navigating from any other page
- update snapshots

* Add gherkin workflows 2 - 5

- add test for Federal program officer key information and CTA
- add test for Community members key information and CTA
- add test for Send feedback
- add test for Join the Open Source community
- update snapshots

* Add gherkin tests for footer links

- add footerlinks feature gherkin file
- adds a comment to the hyphenizeString()
- adds keyword functions for footer
- adds data-cy tags to footer component
- updates snapshots

* Adds workflow to learn more about EO

* Add gherkin test for dataset links

- add data-cy tags to dataset sections
- modify Cy command functions names
- update snapshots

* Add cypress test to deploy_staging.yml

* Add working directory env

* Remove keywords.js from cypress test

* Add a Then step to all About and Footer tests

* Refactor step definitions

- use globalStepDefinitions
- rename keywords to commonSteps
- remove keyword from exclusion list
This commit is contained in:
Vim 2021-10-13 14:06:05 -07:00 committed by GitHub
commit 92d76fb6f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 295 additions and 71 deletions

View file

@ -1,6 +1,8 @@
import React from 'react';
import {Grid} from '@trussworks/react-uswds';
import LinkTypeWrapper from '../LinkTypeWrapper';
import {hyphenizeString} from '../../../cypress/integration/common/helpers';
// the "body" section is the child object to allow for html versus just text
interface AboutCardProps {
@ -29,7 +31,7 @@ const AboutCard = (props: React.PropsWithChildren<AboutCardProps>) => {
src={props.imgSrc}/>
</Grid>
<Grid tablet={{col: 9}}>
<Grid tablet={{col: 9}} data-cy={`${hyphenizeString(props.header)}-block`}>
<Grid row>
<h2>{props.header}</h2>
{props.children}
@ -52,7 +54,7 @@ const AboutCard = (props: React.PropsWithChildren<AboutCardProps>) => {
src={props.imgSrc}/>
</Grid>
<Grid tablet={{col: 9}}>
<Grid tablet={{col: 9}} data-cy={`${hyphenizeString(props.header)}-block`}>
<Grid row>
<h3>{props.header}</h3>
{props.children}

View file

@ -22,6 +22,7 @@ exports[`rendering of the AboutCard checks if component renders 1`] = `
</div>
<div
class="tablet:grid-col-9"
data-cy="test-header-block"
data-testid="grid"
>
<div

View file

@ -5,6 +5,7 @@ import {Grid} from '@trussworks/react-uswds';
import AlertWrapper from '../AlertWrapper';
import DatasetCard from '../DatasetCard';
import J40MainGridContainer from '../J40MainGridContainer';
import {hyphenizeString} from '../../../cypress/integration/common/helpers';
import * as styles from './dsContainer.module.scss';
import * as METHODOLOGY_COPY from '../../data/copy/methodology';
@ -16,7 +17,8 @@ const DatasetContainer = () => {
return (
<>
<J40MainGridContainer fullWidth={true} blueBackground={true}>
<J40MainGridContainer>
<J40MainGridContainer
dataCy={`${hyphenizeString(METHODOLOGY_COPY.DATASETS.HEADING.defaultMessage)}-block`}>
<Grid row>
<Grid col={12}>
@ -42,8 +44,9 @@ const DatasetContainer = () => {
</J40MainGridContainer>
</J40MainGridContainer>
<J40MainGridContainer fullWidth={true} blueBackground={false}>
<J40MainGridContainer>
<J40MainGridContainer fullWidth={true} blueBackground={false} >
<J40MainGridContainer
dataCy={`${hyphenizeString(METHODOLOGY_COPY.DATASETS.ADDITIONAL_HEADING.defaultMessage)}-block`}>
<Grid row>
<Grid col={12}>

View file

@ -7,6 +7,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="grid-container-desktop-lg"
data-cy="datasets-used-in-methodology-block"
data-testid="gridContainer"
>
<div
@ -174,6 +175,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="grid-container-desktop-lg"
data-cy="additional-indicators-block"
data-testid="gridContainer"
>
<div

View file

@ -7,6 +7,7 @@ import {NavList} from '@trussworks/react-uswds';
import {useIntl} from 'gatsby-plugin-intl';
import J40MainGridContainer from './J40MainGridContainer';
import {hyphenizeString} from '../../cypress/integration/common/helpers';
// @ts-ignore
import whitehouseIcon from '../images/eop-seal.svg';
@ -37,19 +38,24 @@ const J40Footer = () => {
key={'whitehouselink2'}
href={'https://www.whitehouse.gov/'}
target={'_blank'}
rel={'noreferrer'}>Whitehouse.gov</a>,
rel={'noreferrer'}
data-cy={hyphenizeString(COMMON_COPY.FOOTER.WHITEHOUSE.defaultMessage)}>
{intl.formatMessage(COMMON_COPY.FOOTER.WHITEHOUSE)}
</a>,
<a
key="foialink"
target={'_blank'}
rel={'noreferrer'}
href={'https://www.whitehouse.gov/ceq/foia'}>
href={'https://www.whitehouse.gov/ceq/foia'}
data-cy={hyphenizeString(COMMON_COPY.FOOTER.FOIA.defaultMessage)}>
{intl.formatMessage(COMMON_COPY.FOOTER.FOIA)}
</a>,
<a
key={'privacylink'}
target={'_blank'}
rel={'noreferrer'}
href={'https://www.whitehouse.gov/privacy/'}>
href={'https://www.whitehouse.gov/privacy/'}
data-cy={hyphenizeString(COMMON_COPY.FOOTER.PRIVACY.defaultMessage)}>
{intl.formatMessage(COMMON_COPY.FOOTER.PRIVACY)}
</a>,
],
@ -58,7 +64,8 @@ const J40Footer = () => {
<a
className={'footer-link-first-child'}
key={'contactlink'}
href={'https://www.usa.gov/'}>
href={'https://www.usa.gov/'}
data-cy={hyphenizeString(COMMON_COPY.FOOTER.CONTACT_LINK.defaultMessage)}>
{intl.formatMessage(COMMON_COPY.FOOTER.CONTACT_LINK)}
</a>,
],
@ -71,11 +78,12 @@ const J40Footer = () => {
// `className="mobile-lg:grid-col-6 desktop:grid-col-3">` needs to be
// `className="mobile-lg:grid-col-12 desktop:grid-col-4">` ugh.
<footer className={'j40-footer'}>
<div className="usa-footer__primary-section pb2">
<div className="usa-footer__primary-section pb2" data-cy={`footer-primary-block`}>
<J40MainGridContainer>
<div className={'grid-row tablet-lg:grid-col4'}>
{NAVLINKS.map((links, i) => (
<div key={`linkSection-${i}`}
<div
key={`linkSection-${i}`}
className="mobile-lg:grid-col-12 desktop:grid-col-4">
<NavSection links={links} />
</div>

View file

@ -42,7 +42,7 @@ const J40Header = () => {
key={'cejst'}
activeClassName="usa-current"
className={'j40-header'}
data-cy={'nav-link-explore'}>
data-cy={'nav-link-explore-the-tool'}>
{intl.formatMessage(COMMON_COPY.HEADER.EXPLORE)}
</Link>,
],

View file

@ -6,18 +6,20 @@ import {GridContainer} from '@trussworks/react-uswds';
interface IJ40MainGridContainer {
children: ReactNode,
fullWidth?: boolean,
blueBackground?: boolean,
className?: string
blueBackground?: boolean,
className?: string,
dataCy?: string,
}
const J40MainGridContainer = ({
children,
fullWidth = false,
blueBackground = false,
className = ''}: IJ40MainGridContainer) => {
className = '',
dataCy,
}: IJ40MainGridContainer) => {
// is it a blue background strip?
className += (blueBackground ? 'j40-main-grid-blue-bk ' : '');
return fullWidth ? (
<div
className={className}>
@ -26,7 +28,8 @@ const J40MainGridContainer = ({
) : (
<GridContainer
containerSize={'desktop-lg'}
className={className}>
className={className}
data-cy={dataCy}>
{children}
</GridContainer>
);

View file

@ -7,6 +7,7 @@ exports[`J40Footer renders correctly 1`] = `
>
<div
class="usa-footer__primary-section pb2"
data-cy="footer-primary-block"
>
<div
class="grid-container-desktop-lg"
@ -79,6 +80,7 @@ exports[`J40Footer renders correctly 1`] = `
>
<a
class="footer-link-first-child"
data-cy="whitehouse-gov"
href="https://www.whitehouse.gov/"
rel="noreferrer"
target="_blank"
@ -90,6 +92,7 @@ exports[`J40Footer renders correctly 1`] = `
class="usa-footer__secondary-link"
>
<a
data-cy="freedom-of-information-act-(foia)"
href="https://www.whitehouse.gov/ceq/foia"
rel="noreferrer"
target="_blank"
@ -101,6 +104,7 @@ exports[`J40Footer renders correctly 1`] = `
class="usa-footer__secondary-link"
>
<a
data-cy="privacy-policy"
href="https://www.whitehouse.gov/privacy/"
rel="noreferrer"
target="_blank"
@ -128,6 +132,7 @@ exports[`J40Footer renders correctly 1`] = `
>
<a
class="footer-link-first-child"
data-cy="find-a-contact-at-usa-gov"
href="https://www.usa.gov/"
>
Find a contact at USA.gov

View file

@ -79,6 +79,11 @@ export const FOOTER = defineMessages({
defaultMessage: 'More information',
description: 'Footer column header',
},
WHITEHOUSE: {
id: 'footer.whitehouselink',
defaultMessage: 'Whitehouse.gov',
description: 'Footer Whitehouse.gov link text',
},
FOIA: {
id: 'footer.foialink',
defaultMessage: 'Freedom of Information Act (FOIA)',

View file

@ -214,7 +214,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="j40-header"
data-cy="nav-link-explore"
data-cy="nav-link-explore-the-tool"
href="/en/cejst"
>
Explore the tool
@ -317,6 +317,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="usa-footer__primary-section pb2"
data-cy="footer-primary-block"
>
<div
class="grid-container-desktop-lg"
@ -389,6 +390,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="footer-link-first-child"
data-cy="whitehouse-gov"
href="https://www.whitehouse.gov/"
rel="noreferrer"
target="_blank"
@ -400,6 +402,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
class="usa-footer__secondary-link"
>
<a
data-cy="freedom-of-information-act-(foia)"
href="https://www.whitehouse.gov/ceq/foia"
rel="noreferrer"
target="_blank"
@ -411,6 +414,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
class="usa-footer__secondary-link"
>
<a
data-cy="privacy-policy"
href="https://www.whitehouse.gov/privacy/"
rel="noreferrer"
target="_blank"
@ -438,6 +442,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="footer-link-first-child"
data-cy="find-a-contact-at-usa-gov"
href="https://www.usa.gov/"
>
Find a contact at USA.gov

View file

@ -214,7 +214,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="j40-header"
data-cy="nav-link-explore"
data-cy="nav-link-explore-the-tool"
href="/en/cejst"
>
Explore the tool
@ -313,6 +313,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</div>
<div
class="tablet:grid-col-9"
data-cy="the-screening-tool-block"
data-testid="grid"
>
<div
@ -357,6 +358,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</div>
<div
class="tablet:grid-col-9"
data-cy="the-justice40-initiative-block"
data-testid="grid"
>
<div
@ -419,6 +421,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</div>
<div
class="tablet:grid-col-9"
data-cy="federal-program-managers-block"
data-testid="grid"
>
<div
@ -470,6 +473,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</div>
<div
class="tablet:grid-col-9"
data-cy="community-members-block"
data-testid="grid"
>
<div
@ -535,6 +539,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</div>
<div
class="tablet:grid-col-9"
data-cy="send-feedback-block"
data-testid="grid"
>
<div
@ -589,6 +594,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</div>
<div
class="tablet:grid-col-9"
data-cy="join-the-open-source-community-block"
data-testid="grid"
>
<div
@ -631,6 +637,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="usa-footer__primary-section pb2"
data-cy="footer-primary-block"
>
<div
class="grid-container-desktop-lg"
@ -703,6 +710,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="footer-link-first-child"
data-cy="whitehouse-gov"
href="https://www.whitehouse.gov/"
rel="noreferrer"
target="_blank"
@ -714,6 +722,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
class="usa-footer__secondary-link"
>
<a
data-cy="freedom-of-information-act-(foia)"
href="https://www.whitehouse.gov/ceq/foia"
rel="noreferrer"
target="_blank"
@ -725,6 +734,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
class="usa-footer__secondary-link"
>
<a
data-cy="privacy-policy"
href="https://www.whitehouse.gov/privacy/"
rel="noreferrer"
target="_blank"
@ -752,6 +762,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="footer-link-first-child"
data-cy="find-a-contact-at-usa-gov"
href="https://www.usa.gov/"
>
Find a contact at USA.gov

View file

@ -214,7 +214,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="j40-header"
data-cy="nav-link-explore"
data-cy="nav-link-explore-the-tool"
href="/en/cejst"
>
Explore the tool
@ -356,6 +356,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="grid-container-desktop-lg"
data-cy="datasets-used-in-methodology-block"
data-testid="gridContainer"
>
<div
@ -523,6 +524,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="grid-container-desktop-lg"
data-cy="additional-indicators-block"
data-testid="gridContainer"
>
<div
@ -1122,6 +1124,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<div
class="usa-footer__primary-section pb2"
data-cy="footer-primary-block"
>
<div
class="grid-container-desktop-lg"
@ -1194,6 +1197,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="footer-link-first-child"
data-cy="whitehouse-gov"
href="https://www.whitehouse.gov/"
rel="noreferrer"
target="_blank"
@ -1205,6 +1209,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
class="usa-footer__secondary-link"
>
<a
data-cy="freedom-of-information-act-(foia)"
href="https://www.whitehouse.gov/ceq/foia"
rel="noreferrer"
target="_blank"
@ -1216,6 +1221,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
class="usa-footer__secondary-link"
>
<a
data-cy="privacy-policy"
href="https://www.whitehouse.gov/privacy/"
rel="noreferrer"
target="_blank"
@ -1243,6 +1249,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
>
<a
class="footer-link-first-child"
data-cy="find-a-contact-at-usa-gov"
href="https://www.usa.gov/"
>
Find a contact at USA.gov