Practical web UI/UX / personal lessonsLesson 15 of 15
Practical web UI/UX · Lesson 15

Refactor and test a complete booking interaction

A convincing revision combines visual craft, state handling, and evidence. It must survive more than a preferred default screenshot.

By the end: justify a form revision, test its recovery paths, and report what the evidence does and does not establish.

Audit before changing everything

Start with the task and content. Is the session clear? Are constraints visible? Does the action name its consequence? Can a person recover from an incorrect address or unavailable seat count? Then inspect spacing, type, emphasis, and component consistency.

The capstone exposes two independent repairs: persistent visible labels and actionable error feedback. The original form stays visible. Switching a repair preserves drafts but resets feedback so the next submission is evaluated under the selected treatment. Presets replace both drafts and reset attempt state.

Define what a repair must preserve

Imagine arriving at a workshop form after deciding to attend Clay basics with a friend. Your task is to request two places for the fictional guest Mina Hart, notice any rejected detail, and understand the final result. The form must keep the session identifiable while you work. A cleaner arrangement that hides availability or changes the requested number of seats has failed this task, even if its alignment looks better. Treat those facts as constraints on the revision rather than material to remove.

Before operating the capstone, inspect its initial incomplete email draft. Both forms contain Mina Hart, the string mina, and two requested seats. With both repairs off, the selected form resembles the reference visually. The entered values displace its placeholders, so the visible field names disappear. Programmatic labels still exist. That distinction matters because a control can have a name available to software while a sighted reader has no persistent nearby reminder of what the entered text represents. The first repair addresses that visible gap.

The same filled draft with different visible identity

Labels repair off
Clay basics
Saturday, 14:00 · 3 places available
Mina Hart
mina
2
No demo reservation submitted.
Labels repair on
Clay basics
Saturday, 14:00 · 3 places available
Guest name
Use a fictional guest name.
Mina Hart
Email
For the demo receipt. Use an invented address.
mina
Seats
Choose 1–3; three places are available.
2
Static text specimens, not inputs. The values are unchanged. Persistent labels explain what each value represents after placeholders have disappeared; they do not repair the incomplete email.

The second repair addresses a different uncertainty. After an invalid submission, the reference reports that the form could not be submitted without identifying the failed field. A person must inspect the entries and guess which rule failed. Actionable feedback identifies the email field, states a repair, and supplies a summary route to it. Keeping these repairs separate lets you ask two precise questions. Can someone identify a filled field before submission? Can someone find and correct the rejected value after submission?

Keep the validator fixed while comparing treatments. The name must contain at least one JavaScript string unit after surrounding spaces are removed, with at most sixty such units. This is a software length rule, not a count of visible letters in every writing system. The email must fit the bounded email-like pattern and be no longer than one hundred string units. The seats value must be exactly the string 1, 2, or 3. Neither visual polish nor a persuasive error message changes those acceptance rules.

Consider a proposed shortcut that replaces the seat field with an unexplained default of one. It removes a possible error but also removes the friend's place from the task. That is a changed requirement, not an equivalent repair. A legitimate simplification would need a visible explanation and a task that actually requests one place. In this comparison, preserve the editable seat value, fixed capacity of three, and original session facts. Then judge whether the person can understand and satisfy the same constraints under each treatment.

One constraint, three submitted strings

Seats textResult under the fixed rule
4Rejected. Only three places are available.
03Rejected. This is not exactly 1, 2, or 3.
3Accepted as a seat value. Other fields must also pass.
Actual seats error text: Choose 1, 2, or 3 seats. Only three are available.
These are validator examples rather than live seat controls. Both 4 and 03 fail the exact-string rule. The repair must explain which entries are accepted without silently changing the requested places.

Read the static specimens as examples rather than controls. Their values stay identical while the surrounding explanation changes. In the live model that follows, turn on only persistent visible labels and inspect the filled draft before submitting. You should recover field identity and see hints, but you should not yet get field-specific error feedback. Predict that limit before trying it. If you expect the label repair to fix email syntax or produce a receipt, you have assigned it a responsibility that belongs elsewhere in the interaction.

Try the interface

Your task: Begin with both repairs off. Repair persistent labels and actionable errors independently, inject each draft preset, then submit and recover. Explain which problem each change addresses.

Repair the booking interaction

Studio Desk demonstration. Actions affect this page only, not a real booking, account, or payment.

Selected-form repairs

Toggling repairs preserves both drafts but resets their feedback.

Reference booking form

Clay basics

Saturday, 14:00 · 3 places available

No demo reservation submitted.

Selected booking form

Clay basics

Saturday, 14:00 · 3 places available

No demo reservation submitted.

Draft conditionStated rule
Guest name1–60 characters after trimming
EmailBounded email-like format; no delivery check
SeatsExactly 1, 2, or 3
Invalid submitPreserve draft and report a problem
Valid submitShow a local receipt only
Complete validation rules and outcomes remain embedded offline.

Use fictional details. Presets replace both drafts and reset receipts/errors; editing changes only that form. Validation starts on submit, then reported problems update during correction. The email rule is a bounded teaching format check, not delivery verification. Each successful submission creates only a local display receipt.

Trace the repair rather than judging the screenshot

Start a controlled exploration with both repairs off and the Incomplete email preset selected. Submit the selected form once. The generic message appears, the draft remains, and no local receipt exists. Now enable actionable errors and summary without enabling visible labels. Toggling either repair preserves both drafts but clears both forms' feedback and submission history. Submit again to observe the new error treatment. Submit again because toggling clears the earlier failure display.

After that failed submission, focus moves to the selected summary. Its email message links to the email input. Follow the link and replace mina with mina@example.invalid. The summary and inline message update as the value changes, but typing should not repeatedly move focus away from the field. When all entries satisfy the rules, the status says the details are ready and asks you to submit. Read this intermediate state carefully. Removing the last error establishes valid details, not a completed local reservation or an already issued receipt.

Correction has an intermediate ready state

  1. Submit mina with the other fields valid
    Check these details appears. Focus moves to the summary; no receipt exists.
  2. Follow the Email summary link
    Focus moves to the email input. The name Mina Hart and seats value 2 remain.
  3. Type mina@example.invalid
    Field focus remains during correction. Once valid, the status reads: Details are ready. Submit to create a local receipt.
  4. Submit the corrected details
    Demo receipt: 2 seats for Mina Hart. Nothing sent to mina@example.invalid.
This static trace follows the selected form with actionable errors enabled. Correcting the final error does not submit the form. The second submit creates only the demo receipt, not an email or remote booking.

Submit the repaired draft. Only this action creates the local receipt, which identifies two seats for Mina Hart and says nothing was sent to the invented address. Change the name afterward to another fictional name. The receipt disappears because the accepted display state clears on editing. The remaining valid details can be submitted again. This sequence separates an editable draft, a failed attempt, corrected details, and a successful local display. It does not model a pending request or a durable booking record on a service.

Next enable visible labels while leaving actionable errors on. The draft values should remain, but the receipt should clear because changing repairs resets feedback. Choose the Blank draft preset to replace both drafts. Submit the selected form and inspect the summary's separate name, email, and seats messages. Correct only the name, then inspect the remaining errors. The email and seat failures must remain explainable without erasing the corrected name. That partial recovery is more informative than checking only whether an entirely valid preset produces a receipt.

Use the reference deliberately during this exploration. Editing the selected email does not repair the reference email because each form owns its draft. Choosing a preset does replace both drafts and clears their feedback, which restores matched starting content. If you compare a corrected selected form with an uncorrected reference, differences in outcome reflect different values as well as different feedback. Match the preset again before a fresh comparison. Do not mistake independence of editing for a promise that every action affects only one side.

Three operations with different effects on work

  1. Edit selected Email
    Only the selected draft changes. Its receipt clears. Previously attempted validation updates during editing.
  2. Toggle Persistent visible labels
    Both draft values remain. Both forms reset their errors, attempt state, and receipts.
  3. Choose Blank draft
    Both drafts become empty. Both forms reset their errors, attempt state, and receipts.
Static state notes distinguish draft replacement from feedback reset. A repair toggle affects both forms' feedback even though the selected form is the one whose treatment changes. Ordinary field editing affects only that form's draft.

Finally use the four-seat preset with both selected repairs enabled. The form should identify the seats problem while retaining the plausible name and email. Replace 4 with 3 and inspect the ready state before submitting. Try 03 instead and predict rejection, because the rule accepts exact seat strings rather than any text with numerical value three. Return to 3 for the successful case. This checks the connection between the stated constraint, the message, the editable value, and the result rather than merely admiring the error border.

Test a matrix of states

Try blank, partly correct, valid, and over-capacity drafts. Inspect successful feedback and corrections after failure. Check keyboard focus, then try longer content and narrower allocations in the responsive lesson. Other lessons isolate pending and stale-response behavior; this capstone does not pretend its synchronous local receipt covers a real network service.

There is no aesthetic score. The interface can report objective local conditions, such as whether fields are valid under the stated rules. It cannot infer from your choices that all users will understand the design or that the revised product meets every accessibility requirement.

Test transitions that a default view cannot show

A useful state matrix begins with situations a guest can actually encounter, not a checklist of decorative variants. The blank draft tests whether the form explains all missing requirements. The incomplete email draft tests one failure among otherwise acceptable entries. The four-seat draft tests a business constraint rather than an email pattern. The valid draft tests the stated completion message. Run each through submission and correction where appropriate. A default screenshot cannot reveal whether rejection preserves work or correction steals focus.

Use keyboard movement to inspect the same recovery task. Begin at the selected fields, submit the incomplete draft, and locate the newly focused summary. Follow its email link, type the fictional correction, and move to Reserve seats without a pointer. Check that you can identify the current target and that the message still makes sense when read near the input. These observations test specific focus destinations and visible information. They do not certify screen-reader announcements, every keyboard path, or compatibility with assistive technologies you have not used.

Compare the two repairs independently across the same draft. With labels on and actionable errors off, you can retain visible field identity but still receive only generic failure feedback. With labels off and actionable errors on, you gain a route to the rejected field but lose persistent visible identity once values fill the controls. With both on, these mechanisms operate together. Their combination answers more needs, but it does not show which mechanism caused any observed change in completion time. Different tasks may depend on them differently.

An incomplete email under separate repairs

Both off
mina
The form could not be submitted. Check your details.
Labels only
Email
mina
The form could not be submitted. Check your details.
Actionable errors only
mina
Summary identifies Email. The inline message says: Enter an email with a name and domain, such as mina@example.invalid.
Both on
Email
mina
Summary identifies Email. The same actionable message appears near the visibly labeled field.
These text specimens describe the same draft after a failed submit. The four combinations expose different mechanisms. A useful combined treatment does not isolate either repair as the cause of a measured improvement.

Visual inspection must include the space occupied by feedback. The current form puts a summary above the fields and messages beside the affected inputs. Those additions increase height after failure. Check that the action remains reachable and that text does not overlap or disappear when enlarged. The existing error treatment includes a two-pixel authored input border and a three-pixel focus outline with an offset. Matching that geometry does not prove that the message is understandable or the form usable.

For a concrete width experiment, use the separate responsive lesson rather than inventing a capstone width control. There you can request a maximum card width between 200 and 300 CSS pixels and inject a longer title. The adapting metadata changes arrangement at an actual container width of 280 pixels. Surrounding panel space can cap the requested width, so requesting 300 does not guarantee that breakpoint is reached. This experiment tests component composition with retained facts. It does not establish that the capstone form has passed page-level reflow checks.

Two observations that answer different questions

Responsive component example
Requested maximum width: 300 CSS px
Actual allocation may be smaller.
The metadata uses two columns only when its query container reaches 280 CSS px.
Capstone result example
Demo receipt: 2 seats for Mina Hart. Nothing sent to mina@example.invalid.
The local form accepted the details.
No pending request, delivery, or persistent booking was checked.
Static evidence examples, not a report of new testing. A width request and a successful local receipt each answer a narrow question. Neither supplies evidence about a remote service, and neither replaces observing task completion.

Keep delayed outcomes separate too. The capstone creates a receipt synchronously and has no response-delivery controls. Use the feedback lesson to inspect a retained draft, a trimmed request snapshot, an accepted value, and a request identifier during waiting and failure. There, stopping the local wait does not cancel server work, and ignoring a stale reply protects only the local editor. The capstone's valid-submit result cannot establish any of those properties. A production form would need both understandable field recovery and an honest contract for uncertain remote outcomes.

Report the scope of the result

A useful handoff records the task, the changes, why each was made, tested states, observed failures, and unresolved risks. Keep preference, task success, technical checks, and causal claims separate. A small test can reveal a specific issue without proving a universal effect.

For transfer, choose a settings form or list you are allowed to edit. Keep its facts fixed, make a reasoned revision, and ask an intended user to perform a task without coaching them through your layout. Retain the failure cases and component states in the implementation, not only in a design presentation.

Make a claim that the evidence can support

Suppose an intended user receives the fictional incomplete draft and the instruction to reserve two places for Mina Hart at Clay basics. Ask them to correct whatever prevents completion without naming the email field or pointing to the summary. Watch where they look, what they change, and what they think the result means. An instruction to click the error link would test compliance with directions instead of discoverability. If they need help, record the help and the point where it occurred rather than counting the attempt as independent completion.

Separate observations from interpretations while reviewing that attempt. An observation might be that the person edited the seats value before finding the malformed email. A possible interpretation is that the generic failure did not identify the problem. An unclear instruction could also explain it. Ask what led them to that field, then compare another attempt under a defined treatment. Do not write that the interface confused everyone when you observed one person's action and have not checked the reason.

An example research note without an invented finding

Possible observation
After generic failure feedback, the participant changed seats from 2 to 3 before editing mina.
Record the instruction, starting draft, and any help given with this episode.
Possible explanation
The message may not have identified the rejected field.
Ask what led to the seat edit. Check whether the task instruction also created uncertainty.
Constructed note-writing example, not a participant study. The first statement records an action. The second is a hypothesis that requires follow-up; it must not replace the observation or become a claim about every user.

If you show one person the reference and then the revised form, their second attempt benefits from knowing the task, values, and likely failure. Faster completion is therefore not clean evidence for the revision alone. Changing the order across participants can reduce a simple order bias, though small observations still have limits. Keep incorrect submissions and mistaken beliefs about completion alongside elapsed time. Someone who submits quickly but believes an email was sent has misunderstood this demo's result, even if the validator accepted every field.

Write the handoff around a reproducible task episode. Name the starting preset and selected repair settings, then describe the action, observed result, and remaining uncertainty. For example, the selected summary received focus after the incomplete email submission; following its link reached Email; typing preserved field focus; submitting corrected details displayed a local receipt. That is stronger than saying the form works. The next reviewer can repeat that check without guessing which state you meant.

A reproducible local recovery episode

Example check record, not a new test report
Start
Incomplete email preset. Both selected repairs on.
Failure and correction to inspect
Submit. Locate summary focus. Follow Email. Replace mina with mina@example.invalid without losing field focus.
Completion to inspect
Submit corrected details. Read the local two-seat receipt for Mina Hart.
Outside this check
Remote availability, email delivery, persistence, full assistive-technology behavior, and unobserved users.
Example handoff wording specifies the starting state and the successive outcomes. A reviewer can repeat it and disagree with an individual observation. The scope statement prevents the local receipt from being read as a verified production reservation.

For transfer, choose a fictional notification settings form with a contact address and a saved preference. Decide which facts must stay fixed before revising its labels or feedback. Passing a format check does not verify address ownership, and local success does not establish delivery. Predict a failed submission, a correction, and a successful acknowledgment for that setting. This carries the reasoning into another interface while leaving Studio Desk's workshop capacity and seat rules behind, where they no longer belong.

Keep technical findings and usability findings distinct in the final recommendation. You may establish that the selected summary targets the right input or that a particular enlarged state retains its text. You may observe a participant recovering without help. Neither alone proves that every intended user can complete the task or that all accessibility requirements are met. Recommend the repair for the specific failure it addresses, preserve the scenarios that exposed that failure, and name the next missing check. Do not turn a local demonstration into a claim about bookings, payments, or persistence.

Exercises

Interpret a combined improvement

After changing labels, error text, and spacing together, three colleagues complete the task faster. What can you conclude?

Hint

The combined treatment and the tested sample are the available evidence.

Worked answer
ClaimScope
Combined revision helpedObserved sample and task
Spacing caused itNot isolated
Whole product is accessibleNot established
Useful evidence need not be exaggerated.

The revised combination helped those people on the observed task if the comparison was sound. You cannot isolate the cause to spacing or generalize to all intended users. Check errors, confidence about completion, task-order effects, and accessibility separately.

Write the next test

A form passes its valid-submit test. It has not been checked after a failed submission or delayed response. What should you test next?

Hint

Cover state changes that can destroy work or create uncertainty.

Worked answer
TestRisk addressed
Invalid then correctedRecovery and retained work
Failure then retryLost draft or duplicate effects
Stale replyIncorrect newer state
Keyboard and enlargementUnavailable controls or content
A successful default path is only one state.

Test invalid input, focus on the summary, correction without losing values, a failure with retry, and a delayed or stale response. Include keyboard and enlarged-content checks. Record which are mocked locally and which involve a real service; do not call a local receipt a verified production booking.

Sources and further reading

Selected guidance and technical definitions were reviewed, not a complete usability literature or accessibility audit. The interfaces are original teaching examples. They do not establish measured improvements in task performance. These optional links are not runtime dependencies.