QA Interview Hub · База знань · Тести

Патерни

Screenplay: огляд

Що таке Screenplay

Screenplay (раніше Journey pattern) це альтернатива Page Object, побудована навколо акторів, а не сторінок. Популярна реалізація для TypeScript і Playwright це Serenity/JS.

Основні поняття:

  • Actor - хто діє (наприклад, "Олена, клієнт банку").
  • Ability - що актор вміє: керувати браузером, викликати API.
  • Task - бізнес-задача, складена з інших задач і взаємодій ("Перевести гроші").
  • Interaction - низькорівнева дія (клік, ввід).
  • Question - що актор може дізнатися про систему (текст, стан), використовується в перевірках.

Тест виглядає як опис поведінки: актор виконує задачі і ставить питання.

await actorCalled('Olena').attemptsTo(
  Navigate.to('/transfers'),
  TransferMoney.of(100).to('UA002'),
  Ensure.that(Text.of(Balance.label()), equals('900.00 EUR')),
);

Ідея в тому, що Task дрібні і незалежні, їх легко комбінувати, і кожна відповідає принципу єдиної відповідальності. Page Object навпаки часто розростається, бо збирає все, що є на сторінці.

На співбесіді: Screenplay моделює тест через акторів, їхні вміння, задачі і питання до системи, а не через сторінки. У TS-світі його реалізує Serenity/JS, і він добре масштабується на великі доменні сценарії з кількома ролями.

Screenplay vs POM: коли не варто

Реалістична оцінка, яку очікують на senior-співбесіді:

КритерійPOM + фікстуриScreenplay
Поріг входунизькийвисокий
Поширеність у Playwrightстандартнішевий
Кілька ролей у сценаріївручнуприродно
Обсяг кодуменшебільше дрібних класів

Screenplay виправданий, коли багато акторів взаємодіють в одному сценарії (клієнт, оператор, адмін), домен складний і тести пишуть як живу документацію.

Коли НЕ варто:

  • Команда невелика або з різним рівнем, і поріг входу стане вузьким місцем.
  • Проєкт середнього розміру, де POM з компонентами і фікстурами вже закриває потреби.
  • Хочеться "модного" фреймворку без реальної проблеми, яку він вирішує.

Фікстури Playwright і шар Steps вже дають більшу частину переваг: DI, бізнес-кроки, звітність через test.step. Тому для більшості проєктів на Playwright стандартом є саме POM.

Типова помилка: стверджувати, що Screenplay "кращий за POM" без контексту, або навпаки відкидати його, не знаючи ідеї. Правильна відповідь показує trade-off.

На співбесіді: Я знаю Screenplay і розумію його переваги для складних доменів з кількома ролями, але для більшості Playwright-проєктів обираю POM з компонентами і фікстурами, бо поріг входу нижчий і команда швидше пише тести.