Skip to content

This is an early unpublished editor's draft; content is incomplete and subject to change.

Current step has visual and programmatic indication

This rule checks that the current step in a multi-step process is communicated through both a visual indication and a programmatic representation of its status.

Applicability

This rule applies to any multi-step process where:

Expectation 1

The current step is visually distinguishable from non-current steps.

Expectation 2

The current step has a programmatic state indicating current status (e.g., exposed in the accessibility tree as current).

Assumptions

Examples

Passed example 1

On a retail website, the current step in the checkout flow is identified both using a bold CSS style, and providing the information programmatically by using the aria-current="step" ARIA attribute.

<ol>
	<li>
		<a href="step1.html" aria-current="step" style="font-wieght:bold">Shipping Address</a>
	</li>
	<li>
		<a href="step2.html">Billing Address</a>
	</li>
	<li>
		<span>Payment Info</span>
	</li>
	<li>
		<span>Review</span>
	</li>
</ol>

Passed example 2

On a retail website, the current step in the checkout flow is identified both using an icon, and providing the information programmatically by using the aria-current="step" ARIA attribute.

<ol>
	<li>
		<a href="step1.html" aria-current="step">
			<span class="icon step-indicator" aria-hidden="true">✓</span>
			Shipping Address
		</a>
	</li>
	<li>
		<a href="step2.html">Billing Address</a>
	</li>
	<li>
		<span>Payment Info</span>
	</li>
	<li>
		<span>Review</span>
	</li>
</ol>

Failed example 1

On a retail website, the checkout flow highlights the current step using a bold CSS style, without providing the information in a programmatically accessible way.

<ol>
	<li>
		<a href="step1.html" style="font-weight:bold">Shipping Address</a>
	</li>
	<li>
		<a href="step2.html">Billing Address</a>
	</li>
	<li>
		<span>Payment Info</span>
	</li>
	<li>
		<span>Review</span>
	</li>
</ol>

Failed example 2

On a retail website, the checkout flow highlights the current step using a different color, without providing the information in a programmatically accessible way.

<ol>
	<li>
		<a href="step1.html" style="color:#006400">Shipping Address</a>
	</li>
	<li>
		<a href="step2.html">Billing Address</a>
	</li>
	<li>
		<span>Payment Info</span>
	</li>
	<li>
		<span>Review</span>
	</li>
</ol>

Failed example 3

On a retail website, the checkout flow highlights the current step using an underline CSS property, without providing the information in a programmatically accessible way.

<ol>
	<li>
		<a href="step1.html" style="text-decoration: underline">Shipping Address</a>
	</li>
	<li>
		<a href="step2.html">Billing Address</a>
	</li>
	<li>
		<span>Payment Info</span>
	</li>
	<li>
		<span>Review</span>
	</li>
</ol>

Failed example 4

On a retail website, the checkout flow highlights the current step programmatically using the aria-current="step" ARIA attribute, without providing the information visually.

<ol>
	<li>
		<a href="step1.html" style="text-decoration: underline">Shipping Address</a>
	</li>
	<li>
		<a href="step2.html">Billing Address</a>
	</li>
	<li>
		<span>Payment Info</span>
	</li>
	<li>
		<span>Review</span>
	</li>
</ol>

Inapplicable example 1

The homepage of a website is not a multi-step process; therefore, it contains no steps and, consequently, no active step.

Inapplicable example 2

On a retail website, the checkout flow is implemented as a single-page process; therefore, there is no sequence and no designated active step.

Inapplicable example 3

A contact form is a single-step process; therefore, there is only one step and no need to indicate an active step.