Skip to main content

Demo: a page with known barriers

Every barrier below is deliberate and documented.

What this is for

Scanning a real site tells you what it found. It does not tell you whether the tool is right, because you do not know the answer in advance. Here you do: the barriers below were put here on purpose, one per row, and the table says what each one is and what a fix should do.

Walk this page with GabaDrone, answer what it asks, save the script, turn it on under Page Scripts, then reload and scan again. The findings that can be fixed by a script should be gone. The ones that cannot should still be here — and that is the correct result, not a failure.

Nothing here is a real control. The buttons do nothing, the form submits nowhere, and the images are placeholders.

The list below is what an automated scan reports, verified by running axe against this page: five findings, four of them fixable by a script. There are other barriers here on purpose — a link that only says “click here”, a field labelled by its placeholder, a div behaving like a button — which no automated check reliably catches. They are here because a scan finding nothing is not the same as a page being usable, and this page should be able to show you the difference.

The barriers, and what each one is

Each deliberate barrier on this page, the rule it breaks, and whether a script can fix it
What is wrong Rule Can a script fix it?
A button with no accessible namebutton-nameYes, once you say what it does
An image with no alternative textimage-altYes, once you describe it
An input with no labellabelYes, once you name it
Text that does not meet contrastcolor-contrastYes, once you choose a colour
Headings that skip from h2 to h4heading-orderNo — reordering content needs a person

The barriers themselves

A button with no accessible name — an icon and nothing else:

An image with no alternative text:

A link whose text says nothing about its destination: click here.

A field labelled only by its placeholder:

And one with no label at all:

A div that behaves like a button but is not one — no role, no tab stop, no keyboard handler:

Open the menu

Text that does not meet the contrast requirement:

This grey on white is about 2.8:1, where 4.5:1 is required.

Barriers only a live browser can find

Nothing below is visible to a checker reading the HTML. Each one needs something to happen first — focus moving, a pointer hovering, a viewport narrowing — which is what an extension can do and a crawler cannot.

A control that shows nothing when it has keyboard focus. Tab to it:

A tooltip that appears on hover and never on focus:

Hover me This text only a mouse can reach

Two controls under 24 pixels, close enough together to hit the wrong one:

A required field that never says it is required:

A link that opens a new tab without warning: Our pricing.

A field whose edge is almost invisible against the page:

A form that asks for the same thing twice:

A heading that skips a level

The heading above is an h4 following an h2. No script can fix that: changing the outline of a page is a decision about its content, and guessing at it would be worse than leaving it reported.

Which account to use

This page carries the voluntasOS widget for the account that owns voluntasos.com. A fix only reaches a visitor when the widget on the page and the script that was saved belong to the same account — so walk this page signed in as that one. Signed in as a different account you can still scan, answer and save; the script will simply never be served here, and nothing will tell you why.

On your own site there is no such trap: the widget you deploy and the account you sign in with are the same one.

After you apply the fixes

Saving from GabaDrone stages a script. It reaches a visitor only after someone turns it on under Page Scripts — that separation is deliberate, because putting a script on a live site is a decision with a name attached to it. GabaDrone offers a button that takes you there.

Once it is on, reload this page. The widget asks the server which scripts apply to this URL and runs them, so the fixes you answered should be in place. Scan again: what should be left is heading-order, and anything you chose not to answer. If nothing changed, check three things in this order — is the script turned on, is it against this exact URL, and is the widget on the page for the same account.