🚀 LEVEL UP TO SENIOR:Unlock 500+ Advanced Practical Challenges & Exercises.
🎓 COURSERA PARTNER:Earn professional Google, Meta, and IBM certificates to supercharge your resume.
HTML MASTER CLASS /// LEARN TAGS /// BUILD STRUCTURE /// SEMANTIC WEB /// HTML MASTER CLASS /// LEARN TAGS ///

Precision in Product

Defining 'Done'. Learn how to write clear, testable criteria that ensure your developers and QA team know exactly what constitutes a successful feature.

Total XP: 0|💻 management XP: 0

Skill Matrix

UNLOCK NODES BY LEARNING NEW TAGS.

AC

Technical Specification //

Defining success.

🚀 LEVEL UP TO SENIOR:Unlock 500+ Advanced Practical Challenges & Exercises.
🎓 COURSERA PARTNER:Earn professional Google, Meta, and IBM certificates to supercharge your resume.

Ambiguity is the enemy of development.

1Defining the Edge Cases

The main flow is easy. Great ACs define what happens when things go wrong. What if the user enters an invalid email? What if the network is down? ACs should cover these 'Unhappy Paths'.

2Shared Understanding

The process of writing ACs with your team is more important than the document itself. It's during this time that you uncover technical constraints or design inconsistencies.

3Pass/Fail for QA

The ACs are the foundation of the QA testing plan. If a feature passes all ACs, it is 'Done' from the Product perspective, regardless of how many other ideas people have.

4Step-by-Step Breakdown

Acceptance Criteria (AC) are the conditions that a product must meet to be accepted by a user, customer, or other stakeholder.

The purpose of AC is to define the boundaries of a story, prevent scope creep, and provide a clear 'Pass/Fail' checklist for testing.

Scenario Format: 'GIVEN [context], WHEN [action], THEN [expected outcome]'. This BDD (Behavior Driven Development) style is highly effective.

A well-written Acceptance Criterion should be:

  • Vague enough to allow for changes later
  • Binary (either the product does it or it doesn't)
  • Written in pseudo-code
  • At least 500 words long

Which of these is a correct Gherkin (Given/When/Then) scenario for a login feature?

  • As a user I want to login
  • GIVEN I am on the login page, WHEN I enter valid credentials, THEN I should be redirected to my dashboard
  • The login page should load in under 2 seconds
  • Users can reset their password if they forget it

Level Up 🚀

Advanced cheat sheets, SEO tricks, and interview prep for this topic.

Browser Support

ChromeSupported

Fully supported.

FirefoxSupported

Fully supported.

SafariSupported

Fully supported.

EdgeSupported

Fully supported.

Accessibility (A11y)

1Write Accessibility Into the Criteria Itself

If 'keyboard operable' or 'screen reader announces the error' isn't listed as an acceptance criterion, it's easy for a feature to ship without it — QA tests against the AC list, so anything missing from that list is unlikely to get tested.

GIVEN a user is navigating the form with a keyboard only WHEN they reach the submit button THEN it must be focusable and reachable via Tab, with a visible focus outline

SEO Implications

  • 1

    AC Prevents SEO Regressions From Slipping Through

    If a redesign's acceptance criteria don't explicitly state that the canonical URL, meta description, and heading structure must remain unchanged, a developer has no signal that those details matter, and a page can lose its search ranking silently.

Best Practices

Write AC Before Development Starts, Not After

AC written after a feature is built tends to just describe whatever was shipped, defeating its purpose as a spec. Write it during backlog refinement so developers know the target before they start coding.

One Criterion, One Testable Claim

Avoid bundling multiple checks into a single AC line with 'and'. If a criterion covers three things and one fails, it's unclear whether the story fails entirely or partially — split it into separate, independently testable lines.

Frequent Bugs

THE BUG

AC describes only the ideal input, so a feature ships that crashes or behaves undefined on empty input, extremely long strings, or a slow or failed network — no one tested it because it wasn't written down.

THE FIX

For every story, explicitly write at least one 'unhappy path' criterion (empty state, error state, boundary values) alongside the happy path, so QA has something concrete to check against.

Real-World Examples

Password Reset Acceptance Criteria

A team is building a 'forgot password' flow and needs AC precise enough that QA, design, and engineering all agree on what 'done' means.

GIVEN a user enters an email that isn't registered
WHEN they submit the forgot-password form
THEN show a generic "if this email exists, a reset link was sent" message (do not reveal whether the account exists)

GIVEN a reset link is older than 1 hour
WHEN the user clicks it
THEN show "This link has expired" and offer to resend

Interview Prep

Pascual Vila

Pascual Vila

Frontend Instructor // Code Syllabus

Common Pitfalls & Errors

The Error //

Writing AC as vague statements of intent instead of testable conditions

Wrong: "The page should load quickly and be user-friendly." Right: "GIVEN a user on a 4G connection, WHEN they open the dashboard, THEN the main content is visible within 2 seconds."

The Solution //

A criterion that can't be answered with a clear yes or no isn't really a criterion — it's an aspiration. Every AC line should describe a specific, checkable condition.

The Error //

Confusing Acceptance Criteria with the user story itself

Wrong: Treating "As a user, I want to reset my password" as sufficient documentation on its own. Right: Pair the story with explicit AC covering an invalid email, an expired link, and a reused old password — the story states the goal, the AC defines when it's actually done.

The Solution //

The story states the goal; the AC defines exactly when that goal counts as met, including the edge cases the story alone never mentions.

Continue Learning