GsAutomationJUnitInterceptor

abstract class GsAutomationJUnitInterceptor implements InvocationInterceptor, TestExecutionExceptionHandler, LifecycleMethodExecutionExceptionHandler

Added in version 1.1.1.

Added in version 1.2.1: Добавлена поддержка скриншотов при возникновении исключений во время выполнения тестов и lifecycle-методов. Добавлено детектирование ошибки на стороне сервера.

Класс, обслуживающий перехват аннотаций Oper и Jexl.

See also

Constructors

GsAutomationJUnitInterceptor

GsAutomationJUnitInterceptor()

Methods

applyAction

protected abstract void applyAction(ExtensionContext extensionContext, AbstractTestEnvironment.ActionConsumer<AbstractTestEnvironment> actionConsumer)

Выполнение метода окружения в контексте фазы теста.

Parameters:
  • extensionContext – контекст фазы теста

  • actionConsumer – метод окружения

Throws:
  • Exception – если выполнение метода по каким-то причинам невозможно

createScreenshot

protected abstract void createScreenshot(ExtensionContext context)

Added in version 1.2.1.

Создать скриншот браузера.

Parameters:
  • context – контекст теста

findServerErrorStackTrace

protected abstract String findServerErrorStackTrace(ExtensionContext context)

Added in version 1.2.1.

Найти стектрейс ошибки сервера в диалоге ошибки на стороне клиента.

Метод выполняет поиск dom-элемента диалога ошибки (data-dialog.class="ERROR") и, при обнаружении, возвращает текст стектрейса из атрибута data-error.stacktrace.

Parameters:
  • context – контекст теста

Returns:

текст стектрейса ошибки сервера или null, если диалог ошибки отсутствует

handleAfterAllMethodExecutionException

public void handleAfterAllMethodExecutionException(ExtensionContext context, Throwable throwable)

handleAfterEachMethodExecutionException

public void handleAfterEachMethodExecutionException(ExtensionContext context, Throwable throwable)

handleBeforeAllMethodExecutionException

public void handleBeforeAllMethodExecutionException(ExtensionContext context, Throwable throwable)

handleBeforeEachMethodExecutionException

public void handleBeforeEachMethodExecutionException(ExtensionContext context, Throwable throwable)

handleExceptionWithDiagnostics

protected void handleExceptionWithDiagnostics(ExtensionContext context, Throwable throwable)

Added in version 1.2.1.

Создать скриншот браузера и проверить наличие диалога ошибки сервера. При обнаружении диалога — обогатить диагностику стектрейсом сервера. Вариант для методов, объявляющих throws Throwable.

Parameters:
  • context – контекст теста

  • throwable – исходное исключение

Throws:
  • Throwable – исходное исключение или AssertionError с диагностикой ошибки сервера

handleExceptionWithDiagnostics

protected void handleExceptionWithDiagnostics(ExtensionContext context, Exception exception)

Added in version 1.2.1.

Создать скриншот браузера и проверить наличие диалога ошибки сервера. При обнаружении диалога — обогатить диагностику стектрейсом сервера. Вариант для методов, объявляющих throws Exception.

Parameters:
  • context – контекст теста

  • exception – исходное исключение

Throws:
  • Exception – исходное исключение, обёрнутое при необходимости в AssertionError

handleTestExecutionException

public void handleTestExecutionException(ExtensionContext context, Throwable throwable)

interceptAfterAllMethod

public void interceptAfterAllMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext)

Метод interceptAfterAllMethod получит управление при вызове каждого метода, аннотированного AfterAll. Обработаются аннотации Oper и Jexl и после этого перенаправится выполнение в такой метод.

interceptAfterEachMethod

public void interceptAfterEachMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext)

Метод interceptAfterEachMethod получит управление при вызове каждого метода, аннотированного AfterEach. Обработаются аннотации Oper и Jexl и после этого перенаправится выполнение в такой метод.

interceptBeforeAllMethod

public void interceptBeforeAllMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext)

Метод interceptBeforeAllMethod получит управление при вызове каждого метода, аннотированного BeforeAll. Перенаправится выполнение в такой метод и после этого обработаются аннотации Oper и Jexl.

interceptBeforeEachMethod

public void interceptBeforeEachMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext)

Метод interceptBeforeEachMethod получит управление при вызове каждого метода, аннотированного BeforeEach. Перенаправится выполнение в такой метод и после этого обработаются аннотации Oper и Jexl.

interceptTestMethod

public void interceptTestMethod(InvocationInterceptor.Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext)

Метод interceptTestMethod получит управление при вызове каждого метода, аннотированного Test. Обработается аннотация BeforeTest, выполнение направится в метод и после этого обработается аннотация AfterTest.

resolveMethodNameForScreenshot

protected static String resolveMethodNameForScreenshot(ExtensionContext context)

Added in version 1.2.1.

Определить имя метода для файла скриншота.

Для lifecycle-методов (@BeforeAll, @AfterAll), где getTestMethod() недоступен, возвращает ExtensionContext.getDisplayName().

Parameters:
  • context – контекст теста

Returns:

имя метода или lifecycle-фазы