> For the complete documentation index, see [llms.txt](https://docs.does.qa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.does.qa/guides/test-registration-and-email-verification.md).

# Test registration and email verification

A registration Flow covers the form, the verification email, and the first signed-in screen. DoesQA supplies a unique inbox per Test Case, so each Run can complete signup without sharing mailboxes.

```mermaid
flowchart TD
  open["Open registration"] --> fill["Set value with $testEmail"]
  fill --> submit["Touch submit"]
  submit --> wait["Wait for email"]
  wait --> openMail["Open email"]
  openMail --> verify["Touch verify link"]
  verify --> check["Check text"]
```

Use the **Flow Builder** for this walkthrough.

## What you need

* A registration URL you can reach from the internet
* A password [Value](/values/value-store.md), such as `NEW_PASSWORD`
* Any other form Values your app requires (name, username, and similar)

Prefer [`$testEmail`](/values/built-in-values.md) so the verification message lands in this Test Case inbox. See [Interacting with emails](/guides/interacting-with-emails.md) for inbox choices.

## Build the Flow

{% stepper %}
{% step %}

## Open the registration page

Start with [**Open**](/test-steps/starter/open.md). Point it at your registration URL.
{% endstep %}

{% step %}

## Fill the form

Add [**Set value**](/test-steps/action/set-value.md) for each field.

Use [`$testEmail`](/values/built-in-values.md) in the email field. Use `$NEW_PASSWORD` (or your Value title) for the password. Fill any other required fields the same way.
{% endstep %}

{% step %}

## Submit registration

Add [**Touch**](/test-steps/action/touch.md) on the submit control. The application should send the verification email.
{% endstep %}

{% step %}

## Wait for the verification email

Add [**Wait for email**](/test-steps/mail/wait-for-email.md) from the [**Mail**](/test-steps/mail.md) family.

1. Set **Inbox** to **Test Case**.
2. Leave **Type** as **New**, or set **Custom** with **Subject** or **From** to match your verification message.
   {% endstep %}

{% step %}

## Open the email and follow the link

Add [**Open email**](/test-steps/mail/open-email.md) with **Inbox** set to **Test Case**.

The message body becomes the active page. Add [**Touch**](/test-steps/action/touch.md) on the verify link. Add [**Close inbox**](/test-steps/mail/close-inbox.md) when you leave the message.
{% endstep %}

{% step %}

## Confirm the account is verified

Add [**Check text**](/test-steps/check/check-text.md) (or another Check) on the success screen, dashboard, or “email verified” message your product shows.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**Pro tip:** If verification opens in a new window, add [**Switch window**](/test-steps/runner/switch-window.md) after the link click, then continue your Checks there. See [Test tabs, windows, and frames](/guides/test-tabs-windows-and-frames.md).
{% endhint %}

<figure><img src="/files/KWa9Yq3MSbSNfRcN1WgN" alt="Registration and email verification Flow"><figcaption><p>Example registration and email verification Flow</p></figcaption></figure>

## Related

* [Interacting with emails](/guides/interacting-with-emails.md)
* [Test a forgotten-password flow](/guides/test-a-forgotten-password-flow.md)
* [Wait for email](/test-steps/mail/wait-for-email.md)
* [Open email](/test-steps/mail/open-email.md)
* [Close inbox](/test-steps/mail/close-inbox.md)
* [Share data with Values](/better-coverage/share-data-with-values.md)
* [Built-in Values](/values/built-in-values.md)
