https://github.com/vaadin/flow-components
Java counterpart of Vaadin Web Components
https://github.com/vaadin/flow-components
hacktoberfest java vaadin
Last synced: 10 months ago
JSON representation
Java counterpart of Vaadin Web Components
- Host: GitHub
- URL: https://github.com/vaadin/flow-components
- Owner: vaadin
- Created: 2020-06-17T07:58:15.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-11T13:30:49.000Z (10 months ago)
- Last Synced: 2025-04-13T00:45:41.828Z (10 months ago)
- Topics: hacktoberfest, java, vaadin
- Language: Java
- Homepage:
- Size: 111 MB
- Stars: 113
- Watchers: 29
- Forks: 70
- Open Issues: 1,013
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
# Vaadin Flow Components
This is a maven multi-module project including all vaadin flow components.
`main` branch is the latest version of all the components that will be released in the [Vaadin platform](https://github.com/vaadin/platform).
## Quick start
It's provided a script that facilitates running most common tasks for running or testing components.
Execute `./scripts/run.sh` and select the appropriate menu options.
NOTE: a valid unix terminal with a regular shell is needed for running the utility.
## Compiling all modules but excluding ITs
- `mvn clean compile -Drelease -T 2C`
## Compiling all the components and their modules including ITs
- `mvn clean test-compile -DskipFrontend -T 2C`
## Installing all modules
- `mvn clean install -DskipTests -Drelease -T 2C`
## Serving the IT pages of a component
- `mvn -am -pl vaadin-checkbox-flow-parent/vaadin-checkbox-flow-integration-tests -DskipTests package jetty:run`
Then navigate to `http://localhost:8080/vaadin-checkbox/checkbox-test` to see the IT page.
## Running ITs of one component
- `mvn -am -pl vaadin-checkbox-flow-parent/vaadin-checkbox-flow-integration-tests verify`
## Running ITs of all components
NOTE: this takes a long while and consumes a lot of resources in your computer, it's better to run tests in the merged repo as it is indicated in the following sections
- `mvn clean verify -T 2C`
## Merging ITs of all components in one module
There is a able to visit all IT modules and merge then into one unique module.
It does substitutions in sources so as routes do no conflict, and also adjust ports etc.
- `./scripts/mergeITs.js`
NOTE: By default it merges all modules, but it's also possible to merge certain modules by passing arguments
- `./scripts/mergeITs.js button text-field crud`
## Running ITs of all components in the merged module
It should take around 15-20 minutes depending on the computer capabilities.
- `mvn verify -Drun-it -pl integration-tests`
NOTE: that we need to activate the module with the `-Drun-it` property. By default it runs 4 tests in parallel but you can change it by setting `-Dfailsafe.forkCount=5`.
## Running in Sauce Labs
The time it takes depends on the number of browsers and the modules tested.
To select which browsers to test, set the `TESTBENCH_GRID_BROWSERS` environment variable with a list of browsers.
```
TESTBENCH_GRID_BROWSERS=edge,safari-13,firefox
```
Then run the following command, replacing the `***` with your Sauce Labs credentials.
For testing one component run:
- `mvn verify -Dsauce.user=*** -Dsauce.sauceAccessKey=*** -pl vaadin-checkbox-flow-parent/vaadin-checkbox-flow-integration-tests`
For running all merged components execute:
- `mvn verify -Dsauce.user=*** -Dsauce.sauceAccessKey=*** -Drun-it -pl integration-tests`
## Debugging web-test-runner tests of a component
Make sure the root level dependencies are installed
- `npm install`
Serve the IT pages of the component whose tests you want to debug
- See "Serving the IT pages of a component" above
Run the tests for the component once to have the necessary dependencies installed
- `node ./scripts/wtr.js grid`
Move to the integration tests module of the component
- `cd vaadin-grid-flow-parent/vaadin-grid-flow-integration-tests`
Start the test runner in watch mode
- `npx web-test-runner --playwright test/**/*.test.ts --node-resolve --watch`
NOTE: The tests actually import the client module under test from `..integration-tests/frontend/generated/jar-resources`.
For faster feedback loop you can work on the generated file directly. Just be careful not to lose your changes to it since it's not under version control.
## Bumping version for all Maven modules
To update the version for all modules for a new major or minor, run the following command:
```
mvn versions:set -DnewVersion= -DprocessAllModules=true -DgenerateBackupPoms=false
```
where you replace `` with the version that you want to set.
## Build script
The `./scripts/build.sh` script is though to be run in CI, it compiles all modules, merge IT's and run those.
It expects `TBLICENSE` and `TBHUB` variables when run in the CI server.
Optionally it's possible to run just a bunch of modules e.g. `./scripts/build.sh grid combo-box`
## Using the component in a Flow application
To use the component in an application using maven,
add the following dependency to your `pom.xml`:
```
com.vaadin
vaadin-checkbox-flow
${platform.version}
```
## Contributing
For submitting pull requests to this repo please check our [contributing guidelines](https://vaadin.com/docs/latest/contributing/pr).
### Update package version for `@NpmPackage` in all files
There are scripts available for updating the `@NpmPackage` annotation to its latest patch version:
- `./scripts/updateNpmVer.js`
### Modify `pom.xml` files in modules
In order to align all component buids, maven pom files are generated from templates placed in `scripts/templates`.
If you need to make any modification in a component, consider whether it is convenient to add the same to all components, then modify files under the template and run:
- `./scripts/updateJavaPOMs.sh` script.
### Formatting
Run `mvn spotless:apply` before pushing your code.
## Bug and enhancement tickets
- Bug tickets and enhancement requests for the web component implementations should go to the Vaadin web components monorepo https://github.com/vaadin/web-components/.
- Issues that are not component-specific (e.g. requests for new components) or encompass multiple Flow components should be posted in this repository.
## LICENSE
For specific module(s), check the LICENSE file under the parent module.