Работа с динамическим контентом и ожидания в Playwright
Динамический контент, такой как асинхронная загрузка данных, анимации и интерактивные элементы, часто вызывает сложности при автоматизации тестирования.
Одной из ключевых особенностей Playwright является встроенная поддержка обработки динамического контента благодаря механизмам автоматического ожидания. Этот функционал позволяет дожидаться появления, изменения или исчезновения элементов на странице перед тем, как взаимодействовать с ними. Это значительно повышает надежность и стабильность тестов.
Статя на данную тему.
Динамический контент, такой как асинхронная загрузка данных, анимации и интерактивные элементы, часто вызывает сложности при автоматизации тестирования.
Одной из ключевых особенностей Playwright является встроенная поддержка обработки динамического контента благодаря механизмам автоматического ожидания. Этот функционал позволяет дожидаться появления, изменения или исчезновения элементов на странице перед тем, как взаимодействовать с ними. Это значительно повышает надежность и стабильность тестов.
Статя на данную тему.
🚀 Отличные новости для тестировщиков и разработчиков! Теперь официальная документация Playwright доступна на русском языке! 🎉
📚 Изучайте фреймворк для автоматизации браузеров еще проще и удобнее.
🔗 Ознакомиться можно здесь: Документация
#Playwright #Автотесты #Тестирование #QA
📚 Изучайте фреймворк для автоматизации браузеров еще проще и удобнее.
🔗 Ознакомиться можно здесь: Документация
#Playwright #Автотесты #Тестирование #QA
playwright.help
Установка | Playwright
Введение
Хотите ускорить тесты в Playwright, сохранив их надежность? Используйте проверенные методы:
Ретраи – автоматические повторы падающих тестов для борьбы с флакингом.
Сериализация – контроль порядка выполнения тестов, когда это важно.
WaitFor – умные ожидания вместо жестких пауз.
Эти подходы помогают избежать проблем с параллельным запуском, не жертвуя скоростью и стабильностью.
Читайте подробнее в статье!
Ретраи – автоматические повторы падающих тестов для борьбы с флакингом.
Сериализация – контроль порядка выполнения тестов, когда это важно.
WaitFor – умные ожидания вместо жестких пауз.
Эти подходы помогают избежать проблем с параллельным запуском, не жертвуя скоростью и стабильностью.
Читайте подробнее в статье!
🔍 Современные подходы в автоматизации с Playwright!
Узнайте, как комбинировать Page Object Model (POM), BDD и Data-Driven Testing (DDT) в Playwright для создания чистых, масштабируемых автотестов. В статье разбираются примеры кода и лучшие практики для эффективного тестирования. 🚀
Узнайте, как комбинировать Page Object Model (POM), BDD и Data-Driven Testing (DDT) в Playwright для создания чистых, масштабируемых автотестов. В статье разбираются примеры кода и лучшие практики для эффективного тестирования. 🚀
Проверьте свои знания в тестировании ПО! Попробуйте решить 10 вопросов из экзамена ISTQB и оцените, готовы ли вы к сертификации.
🔗 Ссылка на тест.
🔗 Ссылка на тест.
Forwarded from Тестировщик от бога
🐞 QA Handbook: Брокеры сообщений
Видео:
🌐 Про Kafka (основы)
🌐 Apache Kafka урок 1. Зачем нужна, что это? RabbitMQ vs Kafka vs БД
🌐 Apache Kafka основы Урок 2. Что такое broker, consumer, producer, topic, partition и т.д.
🌐 Надежность Apache Kafka. Урок 3
Статьи:
▫️Чем различаются Kafka и RabbitMQ: простыми словами
▫️Брокеры сообщений, или Как происходит взаимодействие в рамках распределённой инфраструктуры
Видео:
Статьи:
▫️Чем различаются Kafka и RabbitMQ: простыми словами
▫️Брокеры сообщений, или Как происходит взаимодействие в рамках распределённой инфраструктуры
Please open Telegram to view this post
VIEW IN TELEGRAM
Ускоряем отладку тестов Playwright с помощью ИИ. Как искусственный интеллект помогает находить и исправлять ошибки автоматически. Подробнее в статье.
Forwarded from Irina Sh.
✨ Друзья! В этом году сообщество тестировщиков в Перми переживает второе рождение. Мы каждый месяц встречаемся в Морион Диджитал, чтобы обсудить доклады на профессиональные темы. Неофициально несколько раз встречались в барах, просто пообщаться. И сегодня объявляем о новом этапе - проведении серии митапов!
✅ Приглашаем вас 2 октября на митап “Вызовы современного тестирования”, организованный сообществом тестировщиков QA Guild Perm и Контуром.
📚 На митапе расскажем про:
- Обеспечение защиты моделей ИИ при revers-prompting
- WebSocket vs Rest: погружение в нагрузочное тестирование с K6
- Как мы снизили регресс-баги: от отчаяния до решения
Что: QA Meetup “Вызовы современного тестирования”
Где: Стахановская 54П, 2 этаж, конференц-зал «Иолла».
Когда: 02.10.2025 в 18:30
Регистрация: ссылка
✅ Приглашаем вас 2 октября на митап “Вызовы современного тестирования”, организованный сообществом тестировщиков QA Guild Perm и Контуром.
📚 На митапе расскажем про:
- Обеспечение защиты моделей ИИ при revers-prompting
- WebSocket vs Rest: погружение в нагрузочное тестирование с K6
- Как мы снизили регресс-баги: от отчаяния до решения
Что: QA Meetup “Вызовы современного тестирования”
Где: Стахановская 54П, 2 этаж, конференц-зал «Иолла».
Когда: 02.10.2025 в 18:30
Регистрация: ссылка
Telegram
QA Guild Perm
Пермская гильдия Quality Assurance.
QA Guild Perm — активное сообщество тестировщиков, в котором мы делимся своим профессиональным опытом и помогаем друг другу расти.
QA Guild Perm — активное сообщество тестировщиков, в котором мы делимся своим профессиональным опытом и помогаем друг другу расти.
Гигабайтный Excel и Python? Легко! 🚀
Забудьте о том, что read_excel — это медленно. Нашел крутейшее исследование по ускорению чтения Excel. Автор провел честные бенчмарки и нашел явных фаворитов. Спойлер: Pandas — не всегда ответ.
Ловите гайд, который ускорит вашу работу
Забудьте о том, что read_excel — это медленно. Нашел крутейшее исследование по ускорению чтения Excel. Автор провел честные бенчмарки и нашел явных фаворитов. Спойлер: Pandas — не всегда ответ.
Ловите гайд, который ускорит вашу работу
Pydantic v2 — не мелкий апдейт, а рефакторинг движка в отдельный
pydantic-core на Rust. Это смена архитектуры: быстрее, строже и с новой API-парадигмой для валидации и сериализации.pydantic-core (Rust) — профит по скорости и надёжности.parse_obj → model_validate, dict() → model_dump/model_dump_json.from pydantic import BaseModel
class User(BaseModel):
id: int
name: str = "Anon"
u = User.model_validate({"id": "1", "name": "Bob"})
print(u) # id=1 (если режим lax — pydantic попытается привести)
model_validate — основной метод для валидации словарей/объектов.По умолчанию Pydantic пытается привести типы. Но ты можешь включить строгий режим на модель:
from pydantic import BaseModel, ConfigDict
class M(BaseModel):
model_config = ConfigDict(strict=True)
id: int
M.model_validate({"id": "1"}) # ValidationError: строка → int запрещена
model_config = ConfigDict(strict=True) включает strict-режим для всех полей модели.Если нужен только жёсткий тип для конкретного поля — используй строгие типы (
StrictInt, StrictStr и т.д.).@field_validatorfrom pydantic import BaseModel, field_validator, ValidationError
class User(BaseModel):
username: str
password: str
password2: str
@field_validator('password2')
def passwords_match(cls, v, info):
if v != info.data['password']:
raise ValueError("Пароли не совпадают")
return v
try:
User.model_validate({'username': 'u', 'password': 'x', 'password2': 'y'})
except ValidationError as e:
print(e)
@field_validator — заменитель старого @validator. Может запускаться before/after и получать доступ к уже валидированным данным через ValidationInfo.@model_validatorfrom pydantic import BaseModel, model_validator
class Payment(BaseModel):
amount: int
currency: str
@model_validator(mode='after')
def check_amount(cls, values):
if values['amount'] <= 0:
raise ValueError("amount must be > 0")
return values
@model_validator — для cross-field правил и общего pre/post-processing. Есть режимы before, after, wrap.user = User.model_construct({"id": 1, "name": "x"})model_construct() создаёт экземпляр без валидации — только если данные доверенные и нужны микро-оптимизации.model_dump / model_dump_jsonu = User.model_validate({"id": 1, "name": "Bob"})
print(u.model_dump()) # dict
print(u.model_dump_json()) # json
# опции: exclude_none, exclude_unset, round_trip, by_alias и т.д.model_dump заменил dict() и даёт контроль над сериализацией.class A(BaseModel):
model_config = ConfigDict(extra='forbid')
name: str
A.model_validate({'name': 'x', 'bad': 1}) # ValidationError, extra not allowed
model_config.extra — ignore (по умолчанию), allow, forbid.❌ Привычка: User.parse_obj(...)✔️ Теперь: User.model_validate(...).❌ Ожидать, что dict() сохранит все флаги и алиасы.✔️ Используй model_dump(by_alias=True, exclude_unset=True).❌ Делать сложную cross-field валидацию в @field_validator.✔️ Для таких случаев — @model_validator(mode='after').
🛠 Практические паттерны и советы
👍
Нужна производительность? Для доверенных данных используй model_construct().
👍
Хочешь полностью выключить «магическое» приведение — model_config = ConfigDict(strict=True) или StrictInt/StrictStr.
👍
Для сложных преобразований — @field_validator(..., mode='before'), чтобы нормализовать вход до основной валидации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Изучать Git можно не только по учебникам, но и в игровой форме. Вот подборка интерактивных ресурсов для практики:
Игры:
✨ [Oh My Git!](https://ohmygit.org) — настольная игра с Git-картами.
✨ [Git Game](https://github.com/git-game/git-game) — консольная игра с заданиями на команды.
✨ [Git-It](https://github.com/jlord/git-it-electron) — упражнения на клонирование и работу с GitHub.
Тренажёры:
✨ [Learn Git Branching](https://learngitbranching.js.org/) — лучший способ наглядно освоить ветвление.
✨ [Visualizing Git](https://git-school.github.io/visualizing-git/) — симулятор команд в реальном времени.
Практика на GitHub:
✨ [GitHub Skills](https://skills.github.com/) — официальные мини-курсы с заданиями.
Прокачайте свои навыки в увлекательном формате!
Игры:
✨ [Oh My Git!](https://ohmygit.org) — настольная игра с Git-картами.
✨ [Git Game](https://github.com/git-game/git-game) — консольная игра с заданиями на команды.
✨ [Git-It](https://github.com/jlord/git-it-electron) — упражнения на клонирование и работу с GitHub.
Тренажёры:
✨ [Learn Git Branching](https://learngitbranching.js.org/) — лучший способ наглядно освоить ветвление.
✨ [Visualizing Git](https://git-school.github.io/visualizing-git/) — симулятор команд в реальном времени.
Практика на GitHub:
✨ [GitHub Skills](https://skills.github.com/) — официальные мини-курсы с заданиями.
Прокачайте свои навыки в увлекательном формате!
Playwright 1.59: Технический апгрейд AI-интеграции
Ключевые изменения для встраивания AI-агентов в E2E-пайплайны:
Screencast API
Запись видео с аннотацией действий (подсветка кликов/ввода) и навигационными главами. Позволяет AI-агенту генерировать верифицируемый артефакт прохождения сценария для CI/CD.
browser.bind()
Единая браузерная сессия для нескольких клиентов: MCP-сервер, тестовый раннер, AI-тулчейн. Агент подхватывает уже авторизованный контекст без повторной инициализации.
CLI Debugger
Пошаговый трейс и анализ DOM-снэпшотов в терминале. Используется AI-хилерами для диагностики упавших тестов и автоматической генерации альтернативных селекторов.
Async disposables (await using)
Автоматическая очистка страниц и контекстов — критично для долгоживущих AI-процессов с сотнями микросессий.
Ключевые изменения для встраивания AI-агентов в E2E-пайплайны:
Screencast API
Запись видео с аннотацией действий (подсветка кликов/ввода) и навигационными главами. Позволяет AI-агенту генерировать верифицируемый артефакт прохождения сценария для CI/CD.
browser.bind()
Единая браузерная сессия для нескольких клиентов: MCP-сервер, тестовый раннер, AI-тулчейн. Агент подхватывает уже авторизованный контекст без повторной инициализации.
CLI Debugger
Пошаговый трейс и анализ DOM-снэпшотов в терминале. Используется AI-хилерами для диагностики упавших тестов и автоматической генерации альтернативных селекторов.
Async disposables (await using)
Автоматическая очистка страниц и контекстов — критично для долгоживущих AI-процессов с сотнями микросессий.