# MailSlurp examples by task

Choose the workflow first, then select a project in your language or framework. Each repository directory contains its own setup and run instructions. Set API keys on the test runner or server, and use the resource prerequisites in its README before running live examples.

| Task | Example project | Documentation |
| --- | --- | --- |
| Complete email signup in a browser | [Playwright email testing](https://github.com/mailslurp/examples/tree/master/playwright-email-testing) | [Playwright](/docs/playwright/) |
| Organize email and SMS MFA with page objects | [Java, Selenium and TestNG](https://github.com/mailslurp/examples/tree/master/java-selenium-testng-pom-mfa) | [POM guide](/guides/page-object-model-e2e-mfa-testing/) |
| Receive an SMS OTP | [Playwright SMS testing](https://github.com/mailslurp/examples/tree/master/playwright-sms-testing) | [Phone numbers and SMS](/docs/txt-sms/) |
| Reserve a phone for a parallel test | [JavaScript workflow recipes](https://github.com/mailslurp/examples/tree/master/javascript-documentation-workflows) | [Phone pools](/docs/phone-pools/) |
| Match and extract an email OTP with AI | [Playwright AI email testing](https://github.com/mailslurp/examples/tree/master/playwright-ai-email-testing) | [AI message testing](/docs/ai/) |
| Extract fields from invoice attachments | [JavaScript workflow recipes](https://github.com/mailslurp/examples/tree/master/javascript-documentation-workflows) | [PDF extraction](/docs/ai-attachment-extraction/) |
| Generate signup traffic with k6 | [k6 email load test](https://github.com/mailslurp/examples/tree/master/k6-email-load-test) | [Load testing](/docs/deliverability-test/) |
| Generate signup traffic with Locust | [Python Locust](https://github.com/mailslurp/examples/tree/master/python-locust-load-test) | [Load testing](/docs/deliverability-test/) |
| Check SMS delivery across a cohort | [JMeter SMS delivery tests](https://github.com/mailslurp/examples/tree/master/java-jmeter-sms-deliverability-loadtest) | [JMeter guide](/guides/java-jmeter-sms-deliverability-testing/) |
| Import and render emails on real clients | [Device rendering](https://github.com/mailslurp/examples/tree/master/javascript-device-render) | [Sources and imports](/docs/device-rendering-sources/) |
| Save screenshots and fail incomplete CI renders | [JavaScript workflow recipes](https://github.com/mailslurp/examples/tree/master/javascript-documentation-workflows) | [Render CI checks](/docs/device-rendering-ci/) |
| Measure inbox placement and monitor a domain | [Placement and domain examples](https://github.com/mailslurp/examples/tree/master/JavaScript-InboxPlacement-Test) | [Placement automation](/docs/inbox-placement-automation/) |
| Send using an existing SMTP library | [Node.js Nodemailer](https://github.com/mailslurp/examples/tree/master/nodejs-nodemailer-smtp-example) | [IMAP and SMTP](/docs/imap-smtp/) |

## Choose a validation level

Run compilation and local behavior checks first when the project provides them. A local test with simulated responses checks code behavior; a live test additionally exercises the MailSlurp API and any external delivery path involved. Check which mode a project's run command uses, particularly for phone provisioning, AI, rendering and load tests that consume allowances.

For a production receiver, start with [webhook recovery](/docs/pipeline-recovery/). For an agent runtime, follow [workers and human review](/docs/agent-workers/) and [MCP setup](/docs/mcp/). Browse [all example projects](/docs/examples/) for more frameworks and SDK languages.
