Skip to content

feat(ui-pages): CONTENT-730 страницы для курсов Selenium и Playwright - #26

Merged
fey merged 3 commits into
mainfrom
feat/ui-testing
Oct 19, 2026
Merged

fey merged 3 commits into
mainfrom
feat/ui-testing

Conversation

@fey

@fey fey commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Курсы Selenium и Playwright открывали example.com (у страницы пропал h1, примеры падают с NoSuchElementException) и чужой the-internet.herokuapp.com. Теперь у каждого курса своё учебное приложение под префиксом курса, как у остальных приложений сервера. У приложения есть предметная область, и страницы выросли из её сценариев.

Префикс Приложение Сценарии под уроки
/java-selenium City Library вход читателя → полка; обложки с подписью по наведению и избранным по двойному клику; книга перетаскивается на полку; поиск по каталогу; возврат книги через confirm; превью в новом окне; глава во фрейме
/python-selenium Task Board вход → список задач; меню #menu-button; сессия переносится кукой в новый браузер
/python-playwright Departures табло печатает время вылета в часовом поясе браузера и складывает строки на узком экране; вход пассажира → «My trips»
 custom-server/
 ├── src/
 │   ├── index.ts            # + register(setUpUiPages)
+│   └── ui-pages.ts         # конфиг apps; общие вход, сессия, флеш
 └── assets/
+    └── ui-pages/
+        ├── java-selenium/      # фрагменты страниц с {{prefix}}
+        ├── python-selenium/
+        ├── python-playwright/
+        └── style.css
 test/
+└── ui-pages.test.ts        # локаторы и тексты, которые цитируют уроки; изоляция сессий
POST /<курс>/authenticate
  верно   → подписанная кука ui-session = <user>@/<курс> (path /<курс>) → 302 закрытый раздел + флеш
  неверно → 302 /<курс>/login + флеш
закрытый раздел без сессии своего курса → 302 /<курс>/login + флеш
  • Перетаскивание собрано на mousedown/mouseup: Actions.dragAndDrop в Selenium эмулирует мышь, а HTML5 dragstart на неё не приходит.
  • Выхода в меню нет: ссылка на /logout одна, и find_element по href не попадает на скрытый пункт.
  • Слова Hexlet в приложениях нет, тексты латиницей.
  • Caddyfile не меняется.

Evidence

  • Before: driver.get("https://example.com"); findElement(By.tagName("h1")) → NoSuchElementException (CI hexlet-components/java-selenium-example красный с 19.10).
    After:
    • vitest run: 180 passed, 1 skipped (пропуск в http-api.test.ts, был до PR); tsc, oxlint, oxfmt чистые.
    • Локально pnpm start, playwright по сценариям всех трёх приложений: 13/13 ok, в том числе timezoneId: 'Europe/Moscow' → вылет 08:30Z печатается как 11:30, viewport 390 прячет шапку таблицы.
    • Selenium (python, headless Chrome) на библиотеке: drag_and_drop книги на полку, hover + double click, switch_to.alert у confirm, switch_to.frame("chapter") — ok.
    • Код уроков python_selenium 130 (pytest, вход и неверный пароль) и 150 (локаторы и выход) запущен против локального сервера — проходит.

Merge Danger

Door: two-way

Новые маршруты под свободными префиксами, существующие ответы не тронуты.

Blast Radius: additive

После мержа CI пушит latest, прод обновляется руками через own-heroku. С этим выкатом уедут и невыкаченные #24 и #25. Курсы переводятся на новые адреса только после выката.

🤖 Generated with Claude Code

fey and others added 2 commits October 19, 2026 19:15
Курсы открывали example.com и the-internet.herokuapp.com. Заголовок h1 с
example.com пропал, и примеры уроков падали. Префикс /ui-testing даёт свои
страницы: вход и закрытый раздел с сессией, наведение, перетаскивание,
клавиши, алерты, окна и фрейм. Локаторы и тексты держит test/ui-testing.test.ts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Префикс сервера это курс, как у http-api и postman. Страницы общие и
регистрируются циклом по курсам: /java-selenium, /python-selenium,
/python-playwright. Ссылки, путь куки и значение сессии у курса свои, и
кука одного курса не открывает закрытый раздел другого.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@fey fey changed the title feat(ui-testing): CONTENT-730 страницы для курсов Selenium и Playwright feat(ui-pages): CONTENT-730 страницы для курсов Selenium и Playwright Oct 19, 2026
У страниц появилась предметная область, и каждая страница выросла из её
сценария. У java-selenium библиотека City Library: обложки, полки, поиск,
возврат книги, превью и читалка. У python-selenium трекер Task Board со
списком задач и меню. У python-playwright табло Departures, которое печатает
время в часовом поясе браузера и складывает строки на узком экране.

Общими остались вход, сессия и флеш-сообщение. Выхода в меню нет, чтобы
ссылка на /logout на странице была одна.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@fey
fey merged commit 067cf5d into main Oct 19, 2026
4 checks passed
@fey
fey deleted the feat/ui-testing branch October 19, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant