MailSlurp helper for testing emails with MailSlurp service. MailSlurp creates disposable mailbox for each test and removes it after a test.
Register and obtain API key from MailSlurp.
npm i @codeceptjs/mailslurp-helper --save Enable helper in codecept.conf.js.
helpers: { MailSlurp: { apiKey: '<insert api key here>', require: '@codeceptjs/mailslurp-helper' }, }Use this helper in your tests to check email interactions. The most popular one
- Account activation
- Restore forgotten password
- Action verification
const mailbox = await I.haveNewMailbox(); // wait 10 seconds for an email const email = await I.waitForLatestEmail(10); I.seeInEmailSubject('Restore Password'); I.seeInEmailBody('Click link to restore password'); const restoreUrl = email.body.match(/http(s):\/\/(.*?)\s/)[0]; I.amOnPage(restoreUrl);const mailbox1 = await I.haveNewMailbox(); const mailbox2 = await I.haveNewMailbox(); I.openMailbox(mailbox1); const email = I.waitForEmailMatching({ subject: 'Register' });const assert = require('assert'); const mailbox = await I.haveNewMailbox(); const email = await I.waitForEmailMatching({ subject: 'Thanks' }); assert.eql(email.subject, 'Thanks for registering')MIT
- Configuration
- Configuration
- haveNewMailbox
- haveExistingMailbox
- openMailbox
- sendEmail
- waitForLatestEmail
- waitForEmailMatching
- waitForNthEmail
- grabEmailsMatching
- grabAllEmailsFromMailbox
- seeInEmailSubject
- dontSeeInEmailSubject
- seeInEmailBody
- dontSeeInEmailBody
- seeEmailIsFrom
- seeEmailSubjectEquals
- dontSeeEmailSubjectEquals
- seeNumberOfEmailAttachments
- seeEmailAttachment
Allows to use real emails in E2E tests via MailSlurp service. Sign up for an account at MailSlurp to start.
A helper requires apiKey from MailSlurp to start
helpers: { MailSlurp: { apiKey: '<insert api key here>', require: '@codeceptjs/mailslurp-helper' }, }Use .env file and environment variables to store sensitive data like API keys
apiKey(required) - api key from MailSlurptimeout(default: 10000) - time to wait for emails in milliseconds.debug(default: false) - print debug logs
Type: {apiKey: string, timeout: number?, debug: boolean?}
Creates a new mailbox. A mailbox will be deleted after a test. Switches to last created mailbox.
const mailbox = await I.haveNewMailbox();Use an existing mailbox.
const mailbox = await I.haveExistingMailbox('94cxxxf4-7231-46ce-9f40-xxxcae39xxxx');mailboxIdstring ID of an existing MailSlurp inbox.
Returns Promise<Inbox>
Change a current mailbox to a provided one:
const mailbox1 = await I.haveMailbox(); const mailbox2 = await I.haveMailbox(); // mailbox2 is now default mailbox // switch back to mailbox1 I.openMailbox(mailbox)mailbox
Sends an email from current mailbox, created by I.haveNewMailbox().
I.sendEmail({ to: ['user@site.com'], subject: 'Hello', body: 'World' });data
Waits for the first email in mailbox. If mailbox is not empty - opens the last email.
I.waitForLatestEmail() // wait for 30 seconds for an email I.waitForLatestEmail(30);secnum? Number of seconds to wait.
Returns Promise<Email> an email received.
Wait for an exact email matched by query. You can match emails by from, to, subject, cc, bcc fields. My default, non-strcit matching enabled, so it searches for inclusion of a string. For a strict matching (equality) prepend a value with = prefix.
// wait for email with 'password' in subject const email = await I.waitForEmailMatching({ subject: 'password', }); // wait 30 seconds for email with exact subject const email = await I.waitForEmailMatching({ subject: '=Forgot password', }, 30); // const email = await I.waitForEmailMatching({ from: '@mysite.com', // find anything from mysite subject: 'Restore password', // with Restore password in subject });queryobject to locate an emailsecnum? Number of seconds to wait.
Returns Promise<Email> an email received.
Wait for exact number of emails in mailbox. Returns the last email in the list.
// wait for 2 emails I.waitForNthEmail(2); // wait for 5 emails for 60 seconds I.waitForNthEmail(5, 60); // wait for 2 emails and return the last one const email = await I.waitForNthEmail(2);numbersec
Returns a bunch of emails matched by query. Similar to waitForEmailMatching but returns an array of emails.
// return 2 emails from 'user@user.com' const emails = await I.grabEmailsMatching({ from: 'user@user.com'}, 2);queryobject to locate an emailnumnum? Number of emails to return.
Returns Promise<[Email]> emails matching criteria.
Returns all emails from a mailbox.
const emails = await I.grabAllEmailsFromMailbox();Returns Promise<[Email]> emails.
Checks that current email subject contains a text.
I.seeInEmailSubject('Restore password');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that current email subject does not contain a text.
I.seeInEmailSubject('Restore password');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that current email body contains a text.
I.seeInEmailBody('Click link');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that current email body does not contain a text.
I.dontSeeInEmailBody('Click link');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that email is from a specified address.
I.seeEmailIsFrom('user@user.com');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that current email subject equals to text.
I.seeEmailSubjectEquals('Restore password');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that current email subject doesn't equal to text.
I.dontSeeEmailSubjectEquals('Restore password');Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
text
Checks that current email has expected number of attachments.
I.seeNumberOfEmailAttachments(2);Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
number
Checks that current email has an attachment with specified name.
I.seeEmailAttachment('ExampleAttachment.pdf');Be aware that Mailslurp SDK removes special characters in name of attachment, e.g. "Example-Attachment.pdf" will have name "ExampleAttachment.pdf".
Requires an opened email. Use either waitForEmail* methods to open. Or open manually with I.openEmail() method.
nameRegExp