Class JmixUiTestExtension

java.lang.Object
io.jmix.flowui.testassist.JmixUiTestExtension
All Implemented Interfaces:
org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension, org.junit.jupiter.api.extension.TestInstancePostProcessor

public class JmixUiTestExtension extends Object implements org.junit.jupiter.api.extension.TestInstancePostProcessor, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterEachCallback
Extension starts Vaadin Flow before each test and configures view packages and authentication.

For instance:

 @SpringBootTest(classes = {TestAssistApplication.class, FlowuiTestAssistConfiguration.class})
 public class UserViewsTest {

     @RegisterExtension
     private JmixUiTestExtension extension = new JmixUiTestExtension();

     @Autowired
     private ViewNavigators viewNavigators;

     @Test
     public void navigateToUserListView() {
         viewNavigators.view(UserListView.class)
                 .navigate();

         UserListView view = UiTestUtils.getCurrentView();

         CollectionContainer<User> usersDc = ViewControllerUtils.getViewData(view)
                 .getContainer("usersDc");

         Assertions.assertTrue(usersDc.getItems().size() > 0);
     }
 }
 
For annotation based approach use UiTest annotation to configure the extension.
  • Field Details

    • WINDOW_NAME

      public static final String WINDOW_NAME
      See Also:
    • viewBasePackages

      protected String[] viewBasePackages
    • vaadinSession

      protected com.vaadin.flow.server.VaadinSession vaadinSession
    • ui

      protected com.vaadin.flow.component.UI ui
    • uiTestAuthenticator

      protected UiTestAuthenticator uiTestAuthenticator
  • Constructor Details

    • JmixUiTestExtension

      public JmixUiTestExtension()
  • Method Details

    • getViewBasePackages

      @Nullable public String[] getViewBasePackages()
      Returns:
      view base packages or null if not set
    • withViewBasePackages

      public JmixUiTestExtension withViewBasePackages(@Nullable String... viewBasePackages)
      Sets view base packages. Views under these packages will be available in test.

      Note that depending on the test's configuration all application views may be available.

      Parameters:
      viewBasePackages - view base packages
      Returns:
      current instance of extension
    • getTestAuthenticator

      @Nullable public UiTestAuthenticator getTestAuthenticator()
      Returns:
      authenticator or null if not set
    • withTestAuthenticator

      public JmixUiTestExtension withTestAuthenticator(@Nullable UiTestAuthenticator uiTestAuthenticator)
      Sets authentication management provider that will be used in tests before/after each test.

      Provided authenticator will override a bean implementing UiTestAuthenticator for the test class.

      Parameters:
      uiTestAuthenticator - authenticator to set
      Returns:
      current instance of extension
      See Also:
    • postProcessTestInstance

      public void postProcessTestInstance(Object testInstance, org.junit.jupiter.api.extension.ExtensionContext context) throws Exception
      Specified by:
      postProcessTestInstance in interface org.junit.jupiter.api.extension.TestInstancePostProcessor
      Throws:
      Exception
    • beforeEach

      public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext context) throws Exception
      Specified by:
      beforeEach in interface org.junit.jupiter.api.extension.BeforeEachCallback
      Throws:
      Exception
    • afterEach

      public void afterEach(org.junit.jupiter.api.extension.ExtensionContext context) throws Exception
      Specified by:
      afterEach in interface org.junit.jupiter.api.extension.AfterEachCallback
      Throws:
      Exception
    • setupVaadin

      protected void setupVaadin(org.junit.jupiter.api.extension.ExtensionContext context)
    • registerViewBasePackages

      protected void registerViewBasePackages(org.junit.jupiter.api.extension.ExtensionContext context)
    • registerViewRoutes

      protected void registerViewRoutes(List<String> viewBasePackages, org.junit.jupiter.api.extension.ExtensionContext context)
    • isClassInPackages

      protected boolean isClassInPackages(String classPackage, List<String> viewBasePackages)
    • setupAuthentication

      protected void setupAuthentication(org.junit.jupiter.api.extension.ExtensionContext context)
    • removeAuthentication

      protected void removeAuthentication(org.junit.jupiter.api.extension.ExtensionContext context)
    • clearViewBasePackages

      protected void clearViewBasePackages(org.junit.jupiter.api.extension.ExtensionContext context)
    • getTestAuthenticatorFromAnnotation

      @Nullable protected UiTestAuthenticator getTestAuthenticatorFromAnnotation(org.junit.jupiter.api.extension.ExtensionContext context)
    • getViewBasePackagesToRegister

      protected String[] getViewBasePackagesToRegister(org.junit.jupiter.api.extension.ExtensionContext context)
    • setViewControllersConfigurations

      protected void setViewControllersConfigurations(org.junit.jupiter.api.extension.ExtensionContext context, List<ViewControllersConfiguration> configurations)
    • getApplicationContext

      protected org.springframework.context.ApplicationContext getApplicationContext(org.junit.jupiter.api.extension.ExtensionContext context)