Skip to content
QA Knowledge Hub

Test cases for email compose (Gmail-style)

Updated 2026-11-13 · 6 min read

These 30 cases use explicit test fixtures and checkable outcomes. Cover normal behavior, boundaries, recovery, security and usability, then adapt the requirements to your product.

How to answer in an interview

Ask about recipient limits, draft persistence, attachment limits, offline sending and any undo window. Separate composing, server acceptance and final delivery. Then trace a draft through edits, send and a lost acknowledgement; those transitions expose more than checking the Send button alone.

Scope and test data

These 30 cases describe a fictional Gmail-style composer, not a verified Gmail release. It has To, Cc, Bcc, subject, rich text, attachments, server-saved drafts and a configurable undo delay. Use [email protected], [email protected] and [email protected] in an isolated mail sink only. Gmail documentation is background for recipient and undo concepts; product limits below must come from your own specification.

Before execution, record recipient limit R, attachment limit B bytes, subject limit S, draft-save target and undo window W. This example permits a blank subject only after confirmation, rejects empty recipient sets, deduplicates identical recipients and prevents sending while uploads are incomplete. Keep the sending system disconnected from real recipients.

These are proposed manual test cases, not an execution report. Run security and load checks only in an authorised isolated environment. Record agreed limits before execution; a case without its required limit is not ready to pass or fail.

Recipients and composition

IDCategoryTest caseExpected result
E01FunctionalCompose to [email protected] and send to the test sinkOne message has the exact intended subject, body and recipient
E02FunctionalAdd To, Cc and Bcc recipients and inspect each received copyDelivery reaches all intended sink addresses; To and Cc copies do not expose Bcc recipients
E03NegativeClick Send without any recipientRecipient error appears; draft remains unsent
E04NegativeEnter asha@ and attempt to sendInvalid recipient is identified and send is blocked
E05FunctionalPaste several supported address tokensEvery parsed token is visible for review; none is silently dropped
E06FunctionalAdd the same exact address twiceOne effective recipient remains under the deduplication contract
E07BoundaryAdd R recipients, then R plus oneR is accepted; the extra recipient triggers a limit error before send
E08FunctionalChange the sender among authorised identitiesSelected sender is used in the sink message and Sent copy
E09FunctionalSend Hindi text, emoji and multiline contentRecipient copy preserves text and line breaks
E10NegativeSend a blank subject, cancel warning, then confirmCancel retains draft; confirmation sends one message with blank subject

Drafts and attachments

IDCategoryTest caseExpected result
E11FunctionalEdit body and wait for confirmed draft save, then reloadLast acknowledged draft content and recipients are restored
E12NegativeDisconnect while draft saving is pendingUnsaved state is visible; the UI does not claim server persistence
E13FunctionalOpen two different drafts and edit bothEach draft retains only its own recipients, body and attachments
E14FunctionalDiscard a saved draft and reopen the drafts listDiscarded draft is absent; an old save response cannot resurrect it
E15BoundaryEnter subjects of S and S plus one charactersS is retained; excess is rejected with an explanation rather than silently lost
E16FunctionalAttach a permitted small file and sendReceived filename and file contents match the original test file
E17BoundaryAttach permitted files totalling B and B plus one bytesB passes; excess is blocked using the documented size accounting rule
E18NegativeChoose a forbidden file typeUpload or send is blocked with the applicable file rule
E19NegativeAttempt Send while an attachment upload is incompleteSend is blocked or waits visibly; no attachment-free message is sent accidentally
E20FunctionalRemove an uploaded attachment before sendingNeither recipient copy nor Sent copy contains that attachment

Send lifecycle and safety

IDCategoryTest caseExpected result
E21FunctionalDouble-click Send during a slow acknowledgementOne logical message appears in Sent and at the sink
E22NegativeLose the acknowledgement after acceptance and retryThe existing send is reconciled; no second logical message is created
E23FunctionalUse Undo before W expiresPending send is cancelled and the editable draft returns; sink receives nothing
E24BoundaryTry Undo after W expiresUI no longer promises cancellation; accepted delivery is not represented as recalled
E25NegativeExpire the session before SendReauthentication is required; content is retained according to the draft policy
E26SecurityModify the sender to an unauthorised addressServer rejects the impersonation attempt
E27SecurityPaste active markup into rich text and inspect all rendered copiesUnsafe active content cannot execute in draft, Sent or recipient views
E28UIUse keyboard and screen reader for recipient chips, attachments and errorsControls have meaningful names; chips can be removed and failures located
E29CompatibilityCompose and reopen the same draft on supported browser and mobile clientsSaved recipients, text and attachments agree across clients
E30PerformanceSave and send the largest permitted draft under the agreed workloadSave and acceptance meet their recorded budgets; no duplicate send occurs

Avoid claiming delivery from the wrong evidence

Correlate the draft ID, accepted message ID, Sent entry and sink receipt. A server accepting a message is not proof that another provider delivered it. Test provider rejection and later bounces separately if the product owns that workflow.

An interviewer may ask whether Undo Send recalls mail already read. Describe the configured cancellation window and its boundary; do not promise recall. Google documents Gmail's undo feature, but these cases deliberately avoid adopting its current UI or limits as universal requirements.

Downloads

Quick answers

Can these cases be run against real Gmail accounts?

They are a design checklist for an isolated test system. Do not send messages to real people; map the limits and behavior to the product under test.

What is the highest-risk compose scenario?

A timeout after server acceptance followed by retry can create duplicate messages. Check the message identity and sink receipts, not just the toast.

Sources

Want a project you can show in interviews?

The portfolio project kit walks you through testing a deliberately buggy app with Selenium or Playwright and API tests, then explaining it. The app itself is free.