На замену гермионе яндекс выпустил тестовый фреймворк Testplane
Основанный на wdio и mocha
🤔 Интересно там пофиксили баг со скриншотом айфрейма
Не знаю на сколько им пользуются, ссылку оставлю тут, вдруг кому интересно
https://github.com/gemini-testing/testplane
Теги: #testplane #wdio #mocha
Основанный на wdio и mocha
Не знаю на сколько им пользуются, ссылку оставлю тут, вдруг кому интересно
https://github.com/gemini-testing/testplane
Теги: #testplane #wdio #mocha
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - gemini-testing/testplane: Testplane (ex-hermione) browser test runner based on mocha and wdio
Testplane (ex-hermione) browser test runner based on mocha and wdio - gemini-testing/testplane
👎60😁7👍4
Поучаствовал на прошлой неделе в дискуссии по развитию автотестов в команде, для меня все еще очень сложный формат, где налету надо строить мысли😂
https://youtu.be/nSDNye62hOk?si=4c6fPtTEcHVZLW-t
Теги: #automation
https://youtu.be/nSDNye62hOk?si=4c6fPtTEcHVZLW-t
Теги: #automation
YouTube
Дискуссия "Уютные автотестирования"
Модератор:
Артем Бадышев,
Технический лидер тестирования, ex-Альфа-Банк
Иванов Алексей Владимирович
SDET, Самолет
Архипова Ангелина Александровна
QA инженер, Авито
Зотов Дмитрий
Руководитель группы разработки, Tinkoff
Екатерина Луна
Технический лидер…
Артем Бадышев,
Технический лидер тестирования, ex-Альфа-Банк
Иванов Алексей Владимирович
SDET, Самолет
Архипова Ангелина Александровна
QA инженер, Авито
Зотов Дмитрий
Руководитель группы разработки, Tinkoff
Екатерина Луна
Технический лидер…
👎60👍15😁1
Если у вас есть большой тест, и повторный запуск (retry) не имеет смысла, Сергей Гапанович предлагает отключать такие тесты для повторов. Используйте testInfo.retry, чтобы пропускать ненужные проверки:
Такой подход позволяет оптимизировать процесс автоматизации, исключая ненужные повторы для больших тестов.
Источник
Теги: #automation #cleanСode #playwright
test.describe("How testInfo works", async () => {
test("check", async ({}, testInfo) => {
if (testInfo.retry) test.skip(true, "Повторы не поддерживаются");
expect(1).toBe(2);
});
});
Такой подход позволяет оптимизировать процесс автоматизации, исключая ненужные повторы для больших тестов.
Источник
Теги: #automation #cleanСode #playwright
Playwright Solutions
How To Use Playwright's testInfo.retry To Deal With Flakey Environments
The environment I am working with can be unstable sometimes. To ensure I don't have false negative tests, I need to rerun the failed checks. Playwright makes this easy by allowing you to pass --retries followed by the number of retries.
Skipping certain…
Skipping certain…
👎49👍8
В последнее время я все больше уделяю внимание юнит тестированию, что связано с моим наставничеством на Hexlet и выравнивание пирамиды на работе.
И немного решил освежить основы при написания юнит тестов:
Теги: #unitTests #testing
Please open Telegram to view this post
VIEW IN TELEGRAM
👎54👍8
Давайте разберем конкретные примеры тестирования компонентов React для каждого из принципов FIRST ☝️
Источник: https://github.com/tekguard/Principles-of-Unit-Testing
Теги: #react #тестирование #FIRST
Источник: https://github.com/tekguard/Principles-of-Unit-Testing
Теги: #react #тестирование #FIRST
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👎59👍9
Рассказал о MemLab (спойлер: это инструмент для анализа и оптимизации потребления памяти вашими веб-приложениями ) ➡️ читать здесь.
Ранее уже писал о потреблении памяти веб-приложения:
🔵 часть 1
🔵 часть 2
👍 — если полезно, 👎 — ничего нового
Теги: #tools
Ранее уже писал о потреблении памяти веб-приложения:
👍 — если полезно, 👎 — ничего нового
Теги: #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Что такое MemLab?
MemLab — это инструмент для анализа и оптимизации потребления памяти вашими веб-приложениями. Он помогает обнаруживать утечки памяти в e2e сценариях. Пример кейса для E2E сценария: Давно замечал, что у иви, после просмотра трейлера, сайт немного начал медленно…
👎64👍11❤3
Так выглядит тест будущего, и это не bdd
ZeroStep — это инструмент, который улучшает тестирование с использованием Playwright, интегрируя искусственный интеллект, в частности, GPT-3.5 и GPT-4. Это позволяет сократить время на подготовку и исполнение тестов, а также уменьшить количество ошибок, связанных с изменениями в интерфейсе тестируемых приложений.
Я попробовал написать и автоматизировать тест, что мне показалось достаточно трудозатратным, требующим постоянного дебаггинга и проверки того, что именно тестирует мой тест.
Интересное представление о том, как будет выглядеть автоматизация будущего в виде промпт инженеринга, открывает новые перспективы в разработке тестов. Теперь вместо того, чтобы писать сложные и запутанные селекторы, можно использовать обычный разговорный язык для описания действий, которые должен выполнить тест. Кроме того, применение ИИ позволяет адаптироваться к изменениям в интерфейсе без необходимости переписывать тесты.
Хотя в настоящее время массовое использование таких инструментов, как ZeroStep, может быть ограничено из-за вопросов безопасности и недостаточного уровня доверия к автоматизации на основе ИИ, трудно предсказать, что будет через год. Технологии развиваются быстро, и возможности искусственного интеллекта в тестировании могут значительно расшириться, когда я начинал работать в далеком 2017 году я не мог представить о появлении ChatGPT, а сейчас это повседневный инструмент в работе.
Теги: #playwright #automation
test('Fill form', async ({ page }) => {
const aiArgs = { page, test };
await page.goto('/landings/open-account-and-invest/');
await ai(`Click the 'Открыть счет' button`, aiArgs);
await ai(`Wait until the form is fully loaded`, aiArgs);
await ai(`Fill the 'name' field with realistic data`, aiArgs);
await ai(`Fill the 'phone' field with the complete phone number '9195562010'`, aiArgs);
await ai(`Fill the 'email' field with realistic data`, aiArgs);
await ai(`Click the 'отправить' button`, aiArgs);
await ai(`Verify that a popup appears with the text 'Зарегистрироваться по номеру телефона'`, aiArgs);
});ZeroStep — это инструмент, который улучшает тестирование с использованием Playwright, интегрируя искусственный интеллект, в частности, GPT-3.5 и GPT-4. Это позволяет сократить время на подготовку и исполнение тестов, а также уменьшить количество ошибок, связанных с изменениями в интерфейсе тестируемых приложений.
Я попробовал написать и автоматизировать тест, что мне показалось достаточно трудозатратным, требующим постоянного дебаггинга и проверки того, что именно тестирует мой тест.
Интересное представление о том, как будет выглядеть автоматизация будущего в виде промпт инженеринга, открывает новые перспективы в разработке тестов. Теперь вместо того, чтобы писать сложные и запутанные селекторы, можно использовать обычный разговорный язык для описания действий, которые должен выполнить тест. Кроме того, применение ИИ позволяет адаптироваться к изменениям в интерфейсе без необходимости переписывать тесты.
Хотя в настоящее время массовое использование таких инструментов, как ZeroStep, может быть ограничено из-за вопросов безопасности и недостаточного уровня доверия к автоматизации на основе ИИ, трудно предсказать, что будет через год. Технологии развиваются быстро, и возможности искусственного интеллекта в тестировании могут значительно расшириться, когда я начинал работать в далеком 2017 году я не мог представить о появлении ChatGPT, а сейчас это повседневный инструмент в работе.
Теги: #playwright #automation
👎61👍15❤2
Я решил более регулярно вести канал, и мне интересно, что вам интересно и в каком виде — поучаствуйте в опросе, а если что-то хочется добавить, напишите в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👎55🔥3
👎52
Какой контент на моем канале для вас более полезный/интересный?
Anonymous Poll
77%
образовательный
71%
кейсы
27%
рассказы про конфы, доклады, митапы
👎62
Тесты можно разделить на две школы по способу изоляции кода:
⚖️ Разница в подходах
Тестируемый код
// orderService.js
class OrderService {
constructor(paymentService) {
this.paymentService = paymentService;
}
placeOrder(order) {
if (this.paymentService.processPayment(order)) {
return 'Order placed';
} else {
return 'Payment failed';
}
}
}
// paymentService.js
class PaymentService {
processPayment(order) {
// Логика обработки платежа
return true; // Или false в случае ошибки
}
}
Классический подход 📘
test('placeOrder returns "Order placed" when payment is successful', () => {
const paymentService = new PaymentService();
const orderService = new OrderService(paymentService);
const order = { amount: 100 };
const result = orderService.placeOrder(order);
expect(result).toBe('Order placed');
});Лондонская школа
test('placeOrder returns "Order placed" when payment is successful', () => {
const paymentService = { processPayment: jest.fn().mockReturnValue(true) };
const orderService = new OrderService(paymentService);
const order = { amount: 100 };
const result = orderService.placeOrder(order);
expect(result).toBe('Order placed');
expect(paymentService.processPayment).toHaveBeenCalledWith(order);
});Выбор подхода зависит от конкретного проекта и предпочтений команды.
Теги: #unitTests #testing #cleanСode
Please open Telegram to view this post
VIEW IN TELEGRAM
👎63👍8❤3
👎65
Метрика покрытия кода показывает, какая доля исходного кода была выполнена в тестах.
Однако стопроцентное покрытие кода не гарантирует идеальное качество или отсутствие ошибок. Давайте рассмотрим два основных типа метрик покрытия кода и их ограничения.
Типы метрик покрытия кода
Code Coverage
Code Coverage измеряет отношение количества выполненных строк кода к общему количеству строк кода. На первый взгляд, кажется логичным стремиться к максимальному покрытию, но этот подход имеет свои недостатки.
Пример:
const evaluate = (x) => {
if (x > 10) {
return "Greater";
} else {
return "Lesser";
}
};
// Тесты
assert(evaluate(5) == "Lesser");В этом примере тесты покрывают 50% строк кода.
Теперь рассмотрим пример рефакторинга кода:
const evaluateRefactor = (x) => (x > 10) ? "Greater" : "Lesser";
// Тесты
assert(evaluateRefactor(5) == "Lesser");
В этом примере тесты покрывают только одну строку, что соответствует 100% покрытия
Проблемы с таким подходом:
Branch Coverage
Branch Coverage измеряет отношение количества покрытых ветвей к общему количеству ветвей в коде. Ветви – это управляющие структуры, такие как
if, switch, и циклы.Пример:
const evaluate = (x) => {
if (x > 10) {
return "Greater";
} else if (x < 5) {
return "Lesser";
} else {
return "Equal";
}
};
// Тесты
assert(evaluate(15) == "Greater");
assert(evaluate(3) == "Lesser");
assert(evaluate(7) == "Equal");В этом примере тесты покрывают все возможные ветви:
if (x > 10), else if (x < 5) и else. Таким образом, достигается стопроцентное покрытие ветвей. Однако это не гарантирует, что все граничные условия, такие как точные значения 10 и 5, были протестированы.Проблемы с таким подходом:
Заключение:
code coverage или branch coverage, является полезным инструментом, и они могут говорить о проблемахСтавьте 👍 👎
Теги: #code_coverage #branch_coverage #automation
Please open Telegram to view this post
VIEW IN TELEGRAM
👎56👍14❤3
Представьте, что вы тестируете веб-приложение. Ваше приложение может обращаться к данным с другого сервера (например, API или статики). Однако, по умолчанию браузеры блокируют такие запросы, если они идут с одного домена на другой.
Access to fetch at 'https://api.example.com/data' from origin 'https://myapp.com'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present
on the requested resource.
Если CORS настроен неправильно, вы можете столкнуться с ситуацией, когда ваш тестируемый веб-сайт пытается получить данные с другого домена, а браузер блокирует запрос. Вы увидите ошибку в консоли разработчика, что "доступ запрещен из-за политики CORS".
Как обойти CORS при тестировании?
Иногда, для тестирования или разработки, нужно временно обойти CORS. Вот несколько способов:
-disable-web-security, чтобы отключить проверку CORS. Это быстрое решение, когда вам нужно протестировать что-то без лишних препятствий.start chrome --disable-web-security --user-data-dir="C:/chrome_dev"open -na "Google Chrome" --args --disable-web-security --user-data-dir="/tmp/chrome_dev"Access-Control-Allow-Origin: * разрешает запросы со всех доменов.Обходить CORS можно только в процессе тестирования или разработки. В реальных условиях его следует настраивать правильно, чтобы сохранить безопасность приложения и данных.
Ставьте 👍 👎
Теги: #cors #security #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👎61👍14❤4