2.0.2 • Published 1 year ago

@icokie/cypress-webhooksite v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Cypress-Webhooksite

Buy me a beer

Simple library which adds webhook.site commands into cypress.io

npm version package size minified npm.io

total downloads total downloads per year total downloads per week total downloads per month

Email e2e testing:

  • add import to cypress commands
import '@icokie/cypress-webhooksite'
  • add tasks into cypress.config.ts
import {defineConfig} from 'cypress'
import {tasks} from '@icokie/cypress-webhooksite/lib/tasks'

export default defineConfig({
    e2e: {
        setupNodeEvents(on, config) {
            on('task', tasks)
        },
    },
})
  • connect types in tsconfig.json
{
  "compilerOptions": {
    "types": ["cypress", "@icokie/cypress-webhooksite"]
  }
}
  • use it in your CY test files
describe('Email', () => {
    before(() => {
        // request test email
        cy.getWebHookSiteToken().as('emailRequest')
    })

    it('should receive email after user submits subscribe form', () => {
        cy.visit('http://localhost:5000')

        cy.findByLabelText('Name').should('be.empty').type('Test name')

        cy.get('@emailRequest').then((response) => {
            const { email } = response

            // type email into form
            cy.findByLabelText('Email').should('be.empty').type(email)
        })

        // send email form
        cy.findByRole('button').should('be.enabled').click()

        cy.get('@emailRequest').then((response) => {
            const { uuid } = response

            return cy.getWebHookSiteTokenRequests(uuid, undefined, 30000).then((response) => {
                // get latest email request from email server
                const {data: [latestRequest]} = response

                // check if email contains message which was sent
                cy.wrap(latestRequest.content).should('contain', 'Congratulations you are subscribed :) stay tuned!!!!')

                // delete email when not needed :)
                cy.deleteWebHookSiteToken(uuid)
            });
        })
    })
})

That's it!