RTL языки

WebdriverIO поддерживает работу с разными языками интерфейса, включая те, что используют направление текста справа налево (Right-to-Left, RTL), такие как арабский, иврит, персидский и другие. RTL-верстка часто встречается в приложениях для пользователей из стран, где используется данный формат письма. Тестирование интерфейсов с RTL-локализацией имеет свои особенности, которые важно учитывать при автоматизации с WebdriverIO.

WebdriverIO предоставляет мощный набор инструментов для тестирования веб-приложений, включая локализацию и адаптацию интерфейса под разные языковые стандарты. Работая с RTL-языками, важно учесть несколько моментов:

  1. Направление текста и элементов: Для корректного отображения RTL-контента необходимо убедиться, что верстка страницы правильно адаптируется под этот формат. Это может включать в себя изменения не только в тексте, но и в расположении элементов на странице (например, кнопки навигации, карусели изображений и другие интерактивные компоненты могут изменять свой порядок).

  2. Правильное отображение и взаимодействие с элементами: Важно, чтобы элементы интерфейса не только корректно отображались, но и правильно функционировали при взаимодействии с ними, учитывая особенности RTL-верстки.

Особенности тестирования RTL-локализаций

Тестирование интерфейсов, использующих RTL-языки, не ограничивается только проверкой отображения текста. Оно включает в себя тестирование функциональности и корректности поведения элементов на странице в условиях измененного порядка элементов. Для этого в WebdriverIO можно использовать несколько подходов.

Проверка корректности отображения элементов

Когда страница поддерживает RTL, все элементы интерфейса должны автоматически адаптироваться. Основной задачей является убедиться, что контент не выходит за пределы экрана, текст читается правильно, а компоненты расположены в соответствующем порядке. Для проверки этого в WebdriverIO можно использовать методы проверки расположения элементов на странице с учетом их стилей.

Пример:

const button = await $('#submitButton');
const buttonText = await button.getText();
const buttonPosition = await button.getLocation();

assert.equal(buttonText, 'Отправить');
assert.ok(buttonPosition.x > 0, 'Кнопка расположена правильно на экране');

Здесь проверяется, что кнопка отображается правильно и расположена по горизонтали, что важно для RTL-страниц.

Проверка порядка элементов

RTL-страницы могут менять порядок следования элементов на странице в зависимости от направления текста. Это особенно важно для навигационных панелей, таблиц и списков. Использование WebdriverIO в комбинации с методами для проверки порядка элементов поможет убедиться, что интерфейс остается удобным для пользователей RTL.

Пример проверки порядка элементов:

const firstElement = await $('.first-element');
const secondElement = await $('.second-element');

assert.ok(firstElement.isDisplayed(), 'Первый элемент отображается');
assert.ok(secondElement.isDisplayed(), 'Второй элемент отображается');
assert.ok(firstElement.getLocation().x > secondElement.getLocation().x, 'Элементы расположены корректно');

Здесь важно, чтобы элементы располагались в нужном порядке, и их положение по горизонтали соответствовало логике RTL.

Специфика взаимодействия с элементами на RTL-странице

Для пользователя, использующего RTL-локализацию, интерфейс может работать по-другому. Например, на RTL-страницах кнопка “Назад” будет находиться в правой части экрана, а “Вперед” — в левой. Важно, чтобы в автоматизированных тестах правильно обрабатывались клики и действия с элементами в измененном контексте.

WebdriverIO позволяет имитировать действия пользователя, такие как клик, скроллинг и навигация, с учетом особенностей RTL.

Пример клика по кнопке на RTL-странице:

const backButton = await $('.back-button');
await backButton.click();

В этом случае важно, чтобы клик выполнялся в правильном контексте, где кнопка “Назад” будет на другом месте по сравнению с LTR-страницей.

Тестирование адаптивности и перевода

Адаптивность интерфейса играет ключевую роль при тестировании RTL-локализаций. Когда окно браузера изменяет размер, необходимо удостовериться, что элементы, включая шрифты и кнопки, остаются в нужном положении. В случае с RTL это особенно важно, так как с изменением размера окна могут возникать проблемы с выравниванием или порядком элементов.

WebdriverIO позволяет протестировать поведение элементов при изменении размера окна, проверяя их корректное отображение.

await browser.setWindowSize(1280, 800);
const logo = await $('#logo');
const logoPosition = await logo.getLocation();
assert.ok(logoPosition.x >= 0, 'Логотип отображается корректно при изменении размера окна');

Тестирование текстов с правым выравниванием

Не всегда автоматически отображается правильное выравнивание текста на RTL-страницах, поэтому необходимо проверить, что все элементы с текстом отображаются согласно локализации. В WebdriverIO можно получить стиль текста и проверить, что он соответствует ожидаемому.

Пример:

const paragraph = await $('p');
const textAlign = await paragraph.getCSSProperty('text-align');
assert.equal(textAlign.value, 'right', 'Текст выровнен правильно');

Локализация изображений и мультимедиа

При тестировании RTL-страниц важно учитывать не только текст, но и мультимедийные элементы, такие как изображения и видео. Некоторые графические элементы могут требовать зеркального отражения или изменения порядка отображения. В WebdriverIO можно проверять такие элементы, чтобы убедиться, что они правильно отображаются на RTL-странице.

Пример проверки изображения:

const image = await $('img');
const imageSrc = await image.getAttribute('src');
assert.ok(imageSrc.includes('rtl-version'), 'Изображение отображается в версии для RTL');

Здесь проверяется, что изображение для RTL локализации загружается корректно.

Заключение

WebdriverIO предоставляет гибкие инструменты для тестирования веб-приложений, поддерживающих RTL-локализацию. Важно учитывать не только верстку и отображение текста, но и функциональность элементов, их порядок и корректное взаимодействие с пользователем. Использование методов WebdriverIO, таких как проверка стилей, позиции элементов и их взаимодействие, позволяет гарантировать качественное тестирование и функциональность интерфейса в условиях RTL.