Все в масштабе становится немного сложнее, медленно, но верно, многие строительные блоки внутренних сервисов были системой дизайна DWP, которая включает структурные компоненты (заголовок, ключевые детали, нижний колонтитул) и более функциональные, такие как временная шкала. .
До этого во многих случаях у нас были люди, которые делали компоненты, или вставляли из разных прототипов другие сервисы и модифицировали шапку GOV.UK.
В одном подключенном сервисе мы получили 5 вариантов заголовка, в основном связанных с размером шрифта и выравниванием.
Задача решена?
Ну, частично. Иметь единую точку истины очень полезно, но кое-что все же произошло.
- Локальные изменения
- Ошибки в дизайн-системе
- Изменения в том, что отображается
Некоторые из них были пойманы, и некоторые из них были запущены в производство.
Визуальная регрессия позволяет нам протестировать компонент, использовать отрендеренную версию компонента (с данными) и с помощью драматург сравнить его.
Это легко сломать, но столь же дешево сделать, и в приведенном выше примере это устранило бы большинство непреднамеренных проблем.
Когда это упаковано, это становится артефактом дизайна, который мы можем проверить в нескольких сервисах.
// playwright.config.js const config = { reporter: 'list', testDir: './tests/playwright', snapshotPathTemplate: '{testDir}/example/{arg}.png', }; module.exports = config;
Мы можем настроить драматурга несколькими способами, главное — указать, где находятся наши шаблоны, затем нам нужно написать наш фактический тестовый пример.
const { test, expect } = require('@playwright/test'); const BASE_URL = 'https://gov.uk/'; test.describe('visual tests', () => { test.beforeEach(async ({ page }) => { // Go to the starting url before each test. await page.goto(`${BASE_URL}/government/topical-events/coronation`); await expect(page).toHaveTitle(/Coronation - GOV.UK/); }); test('should have a valid header', async ({ page }) => { await expect(await page.locator('header.gem-c-layout-super-navigation-header') .screenshot()) .toMatchSnapshot('header-v1-desktop.png'); }); });
Этот код загрузит страницу и сравнит компонент с установленным снимком экрана, мы можем привести пример этого, чтобы охватить варианты компонентов, разные размеры страницы.
Мы также можем сопоставить это со снимками кода — это если использование разных фреймворков может быть полезным, поскольку оно утверждает, что html создается одним и тем же способом.