-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into 378-cypress-in-ci
- Loading branch information
Showing
24 changed files
with
666 additions
and
327 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,7 @@ module.exports = defineConfig({ | |
e2e: { | ||
baseUrl: 'http://localhost:3000', | ||
chromeWebSecurity: false, | ||
defaultCommandTimeout: 10000, | ||
setupNodeEvents(on, config) { | ||
config = dotenvFlowPlugin(config) | ||
config.env = { | ||
|
@@ -21,15 +22,18 @@ module.exports = defineConfig({ | |
}, | ||
}, | ||
env: { | ||
TEST_SCIENTIST_USER: '[email protected]', | ||
CYPRESS_SEARCH_QUERY: 'test', | ||
NEXT_PUBLIC_PROVIDER_ID: process.env.NEXT_PUBLIC_PROVIDER_ID, | ||
NEXT_PUBLIC_PROVIDER_NAME: process.env.NEXT_PUBLIC_PROVIDER_NAME, | ||
NEXT_PUBLIC_TOKEN: process.env.NEXT_PUBLIC_TOKEN, | ||
TEST_SCIENTIST_PW: '!test1234', | ||
NEXT_PUBLIC_PROVIDER_NAME: 'acme', | ||
NEXT_PUBLIC_PROVIDER_ID: '572' | ||
TEST_SCIENTIST_USER: '[email protected]', | ||
TEST_SESSION_COOKIE: process.env.TEST_SESSION_COOKIE, | ||
}, | ||
projectId: '6wuou2', | ||
reporter: 'junit', | ||
reporterOptions: { | ||
mochaFile: 'cypress/results/results-[hash].xml', | ||
toConsole: true, | ||
}, | ||
}); | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,67 +1,120 @@ | ||
describe('Viewing Home page', () => { | ||
describe('Navigating to the home page', () => { | ||
// declare variables that can be used to change how the response is intercepted. | ||
let loading | ||
let data = 'services/wares.json' | ||
let error | ||
let featuredServices | ||
|
||
beforeEach(() => { | ||
// Intercept the response from the endpoint to view all requests | ||
cy.customApiIntercept({ | ||
action: 'GET', | ||
alias: 'useAllWares', | ||
requestURL: `/providers/${Cypress.env('NEXT_PUBLIC_PROVIDER_ID')}/wares.json`, | ||
data: featuredServices, | ||
defaultFixture: 'services/wares.json', | ||
emptyFixture: 'services/no-wares.json', | ||
loading, | ||
error | ||
data, | ||
error, | ||
requestURL: '/wares.json?per_page=2000', | ||
}) | ||
|
||
cy.visit('/') | ||
}) | ||
|
||
|
||
context('featured services list is loading', () => { | ||
before(() => { | ||
loading = true | ||
describe('renders a search bar', () => { | ||
it('with no query', () => { | ||
cy.get("form[data-cy='search-bar']").should('exist').then(() => { | ||
cy.log('Search bar renders successfully.') | ||
}) | ||
}) | ||
it('should show 3 placeholder cards loading', () => { | ||
cy.get('p.placeholder-glow').should('be.visible').then(() => { | ||
cy.log('Loading text displays correctly.') | ||
|
||
context('able to navigate to "/browse"', () => { | ||
const testSetup = ({ data, defaultFixture, requestURL }) => { | ||
cy.customApiIntercept({ | ||
alias: 'useFilteredWares', | ||
data, | ||
error, | ||
requestURL, | ||
}) | ||
} | ||
|
||
it('with a blank query', () => { | ||
testSetup({ | ||
data: 'services/wares.json', | ||
requestURL: '/wares.json?per_page=2000&q=', | ||
}) | ||
|
||
cy.get('button.search-button').click() | ||
cy.url().should('include', '/browse') | ||
cy.url().should('not.include', '?') | ||
cy.get('input.search-bar').should('have.value', '') | ||
cy.get(".card[data-cy='item-card']").should('be.visible') | ||
}) | ||
|
||
it('with a valid query term', () => { | ||
testSetup({ | ||
data: 'services/filtered-wares.json', | ||
requestURL: `/wares.json?per_page=2000&q=${Cypress.env('CYPRESS_SEARCH_QUERY')}`, | ||
}) | ||
|
||
cy.get('input.search-bar').type(Cypress.env('CYPRESS_SEARCH_QUERY')) | ||
cy.get('button.search-button').click() | ||
cy.url().should('include', `/browse?q=${Cypress.env('CYPRESS_SEARCH_QUERY')}`) | ||
cy.get('input.search-bar').should('have.value', Cypress.env('CYPRESS_SEARCH_QUERY')) | ||
cy.get(".card[data-cy='item-card']").should('be.visible') | ||
}) | ||
|
||
it('with an invalid query term', () => { | ||
const invalidQuery = 'asdfghjk' | ||
testSetup({ | ||
data: 'services/no-wares.json', | ||
requestURL: `/wares.json?per_page=2000&q=${invalidQuery}`, | ||
}) | ||
|
||
cy.get('input.search-bar').type(invalidQuery) | ||
cy.get('button.search-button').click() | ||
cy.url().should('include', `/browse?q=${invalidQuery}`) | ||
cy.get('input.search-bar').should('have.value', invalidQuery) | ||
cy.get("p[data-cy='no-results']").should('contain', `Your search for ${invalidQuery} returned no results`) | ||
}) | ||
}) | ||
}) | ||
|
||
context('error while making a request to the api', () => { | ||
before(() => { | ||
loading = false | ||
error = true | ||
}) | ||
it('should show an error message.', () => { | ||
cy.get("div[role='alert']").should('be.visible').then(() => { | ||
cy.log('Successfully hits an error.') | ||
describe('renders a text box', () => { | ||
it('showing the about text.', () => { | ||
cy.get("section[data-cy='about-us-section']").should('exist').then(() => { | ||
cy.log('Abouttext renders successfully.') | ||
}) | ||
}) | ||
}) | ||
|
||
context('home page components are loading successfully, &', () => { | ||
before(() => { | ||
featuredServices = true | ||
error = false | ||
}) | ||
it('should show the search bar.', () => { | ||
cy.get("form[data-cy='search-bar']").should('exist').then(() => { | ||
cy.log('Search bar renders successfully.') | ||
describe('makes a call to the api', () => { | ||
context('which when given an invalid access token', () => { | ||
before(() => { | ||
data = undefined | ||
error = { | ||
body: { | ||
message: 'No access token provided.', | ||
}, | ||
statusCode: 403, | ||
} | ||
}) | ||
|
||
it('shows an error message', () => { | ||
cy.get("div[role='alert']").should('be.visible').then(() => { | ||
cy.log('Successfully hits an error.') | ||
}) | ||
cy.get("div[role='alert']").contains('No access token provided.') | ||
}) | ||
}) | ||
it('should show the about text.', () => { | ||
cy.get("section[data-cy='about-us-section']").should('exist').then(() => { | ||
cy.log('Abouttext renders successfully.') | ||
|
||
context('which when returns no error or data', () => { | ||
it('shows 3 placeholder cards loading', () => { | ||
cy.get('p.placeholder-glow').should('have.length', 3).then(() => { | ||
cy.log('Loading text displays correctly.') | ||
}) | ||
}) | ||
}) | ||
it('should show the featured services cards.', () => { | ||
cy.get("div[data-cy='item-group']").should('exist').then(() => { | ||
cy.log('Status bar renders successfully.') | ||
|
||
context('which when returns data', () => { | ||
it('shows the featured services cards', () => { | ||
cy.get("div[data-cy='item-group']").should('exist').then(() => { | ||
cy.log('Status bar renders successfully.') | ||
}) | ||
}) | ||
}) | ||
}) | ||
}) | ||
}) |
Oops, something went wrong.