Package Exports
- cypress-mailhog
- cypress-mailhog/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cypress-mailhog) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
cypress-mailhog
A collection of useful Cypress commands for MailHog 🐗.
This package supports TypeScript out of the box.
Setup
Install this package via NPM:
npm install cypress-mailhogInclude this package into your Cypress command file:
// cypress/support/commands
import 'cypress-mailhog';Before cypress 10.0.0
Add the base url of your MailHog installation to your cypress.json:
{
...
"mailHogUrl": "http://localhost:8090"
}After cypress 10.0.0
Add the base url of your MailHog installation in the e2e block of your cypress.config.ts / cypress.config.js:
export default defineConfig({
projectId: "****",
env: {
mailHogUrl: "http://localhost:8090/",
}
})If your MailHog instance uses authentication, add mailHogAuth to your cypress env config:
{
...
"mailHogAuth": {"user": "mailhog username", "pass": "mailhog password"}
}or add mailHogUsername and mailHogPassword in cypress env config
{
...
"mailHogUsername": "mailhog username",
"mailHogPassword": "mailhog password"
}Commands
Mail Collection
mhGetAllMails( limit=50, options={timeout=defaultCommandTimeout} )
Yields an array of all the mails stored in MailHog. This retries automatically until mails are found (or until timeout is reached).
cy
.mhGetAllMails()
.should('have.length', 1);mhGetMailsBySubject( subject, limit=50, options={timeout=defaultCommandTimeout} )
Yields an array of all mails with given subject. This retries automatically until mails are found (or until timeout is reached).
cy
.mhGetMailsBySubject('My Subject')
.should('have.length', 1);mhGetMailsBySender( from, limit=50, options={timeout=defaultCommandTimeout} )
Yields an array of all mails with given sender. This retries automatically until mails are found (or until timeout is reached).
cy
.mhGetMailsBySender('sender@example.com')
.should('have.length', 1);mhGetMailsByRecipient( recipient, limit=50 )
Yields an array of all mails with given recipient.
cy
.mhGetMailsByRecipient('recipient@example.com')
.should('have.length', 1);mhFirst()
Yields the first mail of the loaded selection.
cy
.mhGetAllMails()
.should('have.length', 1)
.mhFirst();mhDeleteAll()
Deletes all stored mails from MailHog.
cy.mhDeleteAll();Handling a Single Mail ✉️
mhGetSubject()
Yields the subject of the current mail.
cy
.mhGetAllMails()
.should('have.length', 1)
.mhFirst()
.mhGetSubject()
.should('eq', 'My Mails Subject');mhGetBody()
Yields the body of the current mail.
cy
.mhGetAllMails()
.should('have.length', 1)
.mhFirst()
.mhGetBody()
.should('contain', 'Part of the Message Body');mhGetSender()
Yields the sender of the current mail.
cy
.mhGetAllMails()
.should('have.length', 1)
.mhFirst()
.mhGetSender()
.should('eq', 'sender@example.com');mhGetRecipients()
Yields the recipient of the current mail.
cy
.mhGetAllMails()
.should('have.length', 1)
.mhFirst()
.mhGetRecipients()
.should('contain', 'recipient@example.com');Asserting the Mail Collection 🔍
mhHasMailWithSubject( subject )
Asserts if there is a mail with given subject.
cy.mhHasMailWithSubject('My Subject');mhHasMailFrom( from )
Asserts if there is a mail from given sender.
cy.mhHasMailFrom('sender@example.com');mhHasMailTo( recipient )
Asserts if there is a mail to given recipient (looks for "To", "CC" and "BCC").
cy.mhHasMailTo('recipient@example.com');Jim Chaos Monkey 🐵
mhGetJimMode()
Returns if Jim is enabled / disabled.
cy
.mhGetJimMode()
.should('eq', true);mhSetJimMode( enabled )
Enables / Disables Jim chaos monkey.
cy
.mhSetJimMode(true)
.mhGetJimMode()
.should('eq', true);Package Development
Start Local Test Server
Navigate into the test-server directory.
cd ./test-server/Install dependencies.
composer install
yarn # or npm installStart docker server.
docker-compose upOpen the test page in your browser: http://localhost:3000/cypress-mh-tests/
Open MailHog in your browser: http://localhost:8090/
Open the Cypress testclient.
yarn cypress:open