Skip to content

TatuLund/uiunittest-demo

Repository files navigation

Register

This is demo application of how to do UI unit testing with Vaadin 23 Spring Boot application using Vaadin TestBench.

Documentation:

https://vaadin.com/docs/latest/testing/ui-unit

UI Unit Tests are run via mocked Vaadin system without a browser, thus they run quicker. Check the example test story in AddressViewTest.java.

  • Open AddressView
  • Input a new address in the Form
  • Click Save
  • Verify Notification with correct message
  • Trigger Grid filter.
  • Verify that new address appears in Grid
  • Select the newly added address in Grid
  • Verify that Form is populated by new address
  • Click Delete
  • Verify Notification with correct message

For sake of comparison the same user story is included as TestBench/Selenium based browser test in AddressViewIT.java

Running the application

The project is a standard Maven project. To run it from the command line, type mvnw (Windows), or ./mvnw (Mac & Linux), then open http://localhost:8080 in your browser.

You can also import the project to your IDE of choice as you would with any Maven project. Read more on how to import Vaadin projects to different IDEs (Eclipse, IntelliJ IDEA, NetBeans, and VS Code).

Deploying to Production

To create a production build, call mvnw clean package -Pproduction (Windows), or ./mvnw clean package -Pproduction (Mac & Linux). This will build a JAR file with all the dependencies and front-end resources, ready to be deployed. The file can be found in the target folder after the build completes.

Once the JAR file is built, you can run it using java -jar target/register-1.0-SNAPSHOT.jar

Project structure

  • MainLayout.java in src/main/java contains the navigation setup (i.e., the side/top bar and the main menu). This setup uses App Layout.
  • views package in src/main/java contains the server-side Java views of your application.
  • views folder in frontend/ contains the client-side JavaScript views of your application.
  • themes folder in frontend/ contains the custom CSS styles.

Useful links

Releases

No releases published

Packages

No packages published

Languages