Формы в веб-приложениях являются ключевым элементом взаимодействия с пользователем. Библиотека Lighthouse предоставляет средства для автоматизированного анализа форм на странице, проверки их доступности, корректности структуры и соответствия стандартам веб-разработки.
Основные параметры формы, на которые обращает внимание Lighthouse:
action и метода method.
Отсутствие этих атрибутов снижает семантическую ценность формы и может
вызвать проблемы при отправке данных.input,
textarea, select) внутри
<form> для обеспечения корректного взаимодействия с
пользователем и поддержки доступности.id) для полей
ввода, чтобы корректно связывать их с лейблами.Пример структуры корректной формы:
<form action="/submit" method="POST">
<label for="username">Имя пользователя</label>
<input type="text" id="username" name="username" required>
<label for="email">Электронная почта</label>
<input type="email" id="email" name="email" required>
<button type="submit">Отправить</button>
</form>
Lighthouse проверяет наличие обязательных атрибутов,
таких как required, а также правильное использование типов
полей для повышения доступности и удобства использования.
Лейблы выполняют важную функцию — они обеспечивают семантическую связь с полями ввода, позволяя пользователям понять назначение каждого поля. В Lighthouse анализируются два основных способа связывания лейбла с полем:
for и уникальный
id:<label for="password">Пароль</label>
<input type="password" id="password" name="password">
<label>:<label>
Пароль
<input type="password" name="password">
</label>
Lighthouse выявляет ошибки, когда лейбл отсутствует или не связан с соответствующим полем, что снижает доступность страницы для пользователей с ограниченными возможностями.
Lighthouse предоставляет аудит доступности, включающий проверки форм:
aria-*, если лейблы
не могут быть добавлены традиционным способом.Пример использования ARIA для нестандартной формы:
<div role="form" aria-labelledby="loginForm">
<div>
<label id="loginUsername" for="username">Имя пользователя</label>
<input type="text" id="username" aria-labelledby="loginUsername">
</div>
<div>
<label id="loginPassword" for="password">Пароль</label>
<input type="password" id="password" aria-labelledby="loginPassword">
</div>
</div>
Lighthouse отслеживает соответствие таких форм стандартам WCAG, что критично для корпоративных и государственных сайтов.
Lighthouse позволяет интегрировать тестирование форм в CI/CD процессы, выявляя ошибки на ранних этапах разработки. Основные проверяемые аспекты:
required) и их
валидация.email,
tel, number).placeholder не
заменяет label).Пример сценария автоматического анализа формы с Lighthouse через Node.js:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {port: chrome.port, onlyCategories: ['accessibility']};
const runnerResult = await lighthouse('https://example.com/login', options);
const audits = runnerResult.lhr.audits;
console.log(audits['label'].details);
await chrome.kill();
})();
label и
input: несоответствие for и
id.placeholder вместо
лейбла: Lighthouse оценивает это как снижение доступности.id и связывать его с
label.Фокус на правильной структуре форм и лейблов обеспечивает доступность, удобство и корректную работу веб-приложения, снижает количество ошибок при вводе данных и улучшает пользовательский опыт.