Size: a a a

Selenide на русском

2021 November 17

AS

Andrei Solntsev in Selenide на русском
Я просто пытаюсь понять, какую реальную проблему мы решаем. Не воспринимайте в штыки. ;)
источник

PO

Petr Ovcharenko in Selenide на русском
Хм, например мы хотим, чтобы по дефолту у всех тестов было ожидание на 4 а 10 секунд, не было автоматических скриншотов и кастомная директория для загрузки файлов. Но при этом у нас несколько фикстур для тестов, как сейчас захендлить это посредством Selenide?
источник

AS

Andrei Solntsev in Selenide на русском
Не знаю, что вы понимаете под словом "фикстура", но что вам мешает создать одну фикстуру с таймаутом в 10 секунд для всех тестов?
источник

PO

Petr Ovcharenko in Selenide на русском
Под фикстурой условный BaseTest, с методом BeforeAll/BeforeSuite. В джава множественного наследования нет, да и ситуаций когда тебе нужно разные фикстуры для разных тестов хватает.
источник

PO

Petr Ovcharenko in Selenide на русском
Но и да, это не проблема которую по другому не решить, но текущие решения не самые удобные
источник

MS

Maksim Smirnov in Selenide на русском
а через интерфейсы не пробовали? В одном сделать BeforeAll с аллюром, в другом еще с чем-нибудь. И перечисляете то, что нужно. Только название разные должны быть у фикстур, конечно же.
источник

AK

Alexandr Kachurin in Selenide на русском
у junit есть BeforeAllCallback/BeforeEachCallback
источник

PO

Petr Ovcharenko in Selenide на русском
Не пробовал, но в таком случае ты должен кругом таскать этот интерфейс и не провтыкивать добавлять, + самом метод будет вызываться несколько раз и делать одно тоже, что так себе.
источник

AS

Andrei Solntsev in Selenide на русском
@petro_ov Да, я бы тоже такое делал через мезанизм JUnit. Типа такого:


@ExtendedWith({UITestsFixture.class, PaymentsFixture.class})
public class InternationalPaymentTest {…}
источник

AS

Andrei Solntsev in Selenide на русском
Да, при таком подходе есть риск, что в каком-то тесте ты можешь забыть прописать UITestsFixture.
Но можно сделать так, чтобы тесты валились, если ты забыл прописать.
источник

AS

Andrei Solntsev in Selenide на русском
Но по крайней мере я понял, что вы хотите сделать - чтобы один раз положить файлик selenide.properties в classpath и нигде ничего больше не прописывать. Спасибо. Вроде разумно.
источник

AS

Andrei Solntsev in Selenide на русском
@petro_ov Но тогда ещё пара вопросов:
1. Если там глобальные настройки длы всех тестов типа таймаута, зачем подкладывать этот файл руками на дженкинс? Почему бы его сразу не закоммитить в проект?
2. Что, если в каком-то тесте тебе не подойдёт содержимое этого файла? Отменить его загрузку ведь уже не получится.
источник

PO

Petr Ovcharenko in Selenide на русском
Дефолтный файл и так лежит в репнике, отдельный лишь используются в специфических тестах. Просто заменять один файл легче, мб имхо, чем пробрасывать с пол дюжины пропертей в билд. (Файлы хранятся под разными id и когда нужно, их явно передаем в настройке джобы и он перезаписывает дефолтный, если кастомных параметров мало то -D… и погнали)
источник

PO

Petr Ovcharenko in Selenide на русском
Я выбрал вариант лисенера, подключенного через SPI,  но все же ощущение, что это все костыли, поверх селенида(
источник

AS

Andrei Solntsev in Selenide на русском
Да не, я пока не вижу ничего плохого.
Попробуй сформулировать минусу этого "костыля". Что может сломаться? Какая проблема с ним часто случается?
источник

PO

Petr Ovcharenko in Selenide на русском
Это зависимость на внешнюю библиотеку, тестнг/junit/etc. Надо добавлять каждому отдельно, придумывать свои реализации.
источник

PO

Petr Ovcharenko in Selenide на русском
Хотя это просто конфигуряция самого селенида
источник

AS

Andrei Solntsev in Selenide на русском
Да, верно: надо добавлять каждому отдельно. Но я предполагаю, что по-любому придется каждому самому добавлять что-то подобное, потому что кроме селенида, в проекте всегда будут какие-то ещё настройки. Это неизбежно.
источник

AK

Alexandr Kachurin in Selenide на русском
показли бы пример пропертей, без кредов офк)
источник

AK

Alexandr Kachurin in Selenide на русском
просто мне кажется, если вы запускаете на машине только определенные тесты, то проще наверно просто прокинуть переменные окружения
источник