Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,4 @@ enforcement ladder](https://github.com/mozilla/diversity).

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
https://www.contributor-covenant.org/translations.
107 changes: 107 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Contributing to WindowTester

First off — thanks for taking the time to contribute! 🎉
The following guidelines will help you set up the project locally, follow our coding standards, and
submit high-quality contributions.

---

## 📋 Before You Start

- Read our [Code of Conduct](CODE_OF_CONDUCT.md) — we take respectful collaboration seriously.
- Check existing [Issues](issues) and [Pull Requests](pulls) to avoid duplication.
- For large changes, please open a discussion or issue first.

---

## 🛠 Local Development Setup

1. **Fork & Clone**

```bash
git clone https://github.com/r4fterman/windowtester.git
cd windowtester
```
2. Run the project

```bash
mvn clean verify
```
3. Run the tests

```bash
mvn clean test
```

## 🧑‍💻 Coding Guidelines

- Follow the code style enforced by our linter (npm run lint).
- Use descriptive commit messages (e.g., fix: correct typo in readme).
- Keep pull requests focused — one feature or bugfix per PR.

## Code Style

Thank you for following the style guide and helping us keep the codebase consistent!

### Formatting

- We follow the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html).
- Code formatting is fully automated:
- The project is configured with [spotless-maven-plugin](https://github.com/diffplug/spotless).
- A local `pre-commit` hook runs Spotless automatically. See `scripts/git-hooks/pre-commit`
- You do **not** need to manually format your code or run additional commands.
- When you run `git commit`, Spotless will reformat staged Java files if needed.
- If formatting changes were applied, they are automatically added to the commit before it is
finalized.

**Developer Notes**

- Always commit your changes as usual: `git add ... && git commit -m "message"`.
- If your IDE shows formatting differences, don’t worry – the hook will fix them during commit.
- Pull requests will only be accepted if they are properly formatted (this is enforced by CI as
well).

### Import Rules

- Wildcard imports (e.g., `import java.util.*;`) are **not allowed**.
- Each class must be imported explicitly, for example:

```java
// ✅ Allowed
import java.util.List;
import java.util.Map;

// ❌ Not allowed
import java.util.*;
```
- This rule is enforced via Checkstyle.
If wildcard imports are present, the build will fail.

## 🔄 Pull Request Process

1. Create a new branch for your work:

```bash
git checkout -b feature/my-new-feature
```
2. Commit your changes with a clear message.
3. Push your branch to your fork:

```bash
git push origin feature/my-new-feature
```
4. Open a Pull Request against the main branch.

## 🐞 Reporting Bugs

- Use the GitHub Issue Tracker and create a new entry there.
- Include steps to reproduce, expected behavior, and screenshots if possible.

## 💡 Suggesting Features

- Use the “Feature Request” issue template.
- Clearly explain why the feature is needed and how it should work.

---

Thanks again for contributing to WindowTester — you help make it better for everyone! 🚀
74 changes: 0 additions & 74 deletions CONTRIBUTION.md

This file was deleted.

40 changes: 20 additions & 20 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Eclipse Public License - v 1.0
=============================
==============================

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT").
ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
Expand All @@ -12,14 +12,14 @@ AGREEMENT.
* **a)** in the case of the initial Contributor, the initial code and documentation distributed
under this Agreement, and
* **b)** in the case of each subsequent Contributor:
* **i)** changes to the Program, and
* **ii)** additions to the Program;
where such changes and/or additions to the Program originate from and are distributed by that
particular Contributor. A Contribution 'originates' from a Contributor if it was added to the
Program by such Contributor itself or anyone acting on such Contributor's behalf.
Contributions do not include additions to the Program which: **(i)** are separate modules of
software distributed in conjunction with the Program under their own license agreement, and *
*(ii)** are not derivative works of the Program.
* **i)** changes to the Program, and
* **ii)** additions to the Program;
where such changes and/or additions to the Program originate from and are distributed by that
particular Contributor. A Contribution 'originates' from a Contributor if it was added to the
Program by such Contributor itself or anyone acting on such Contributor's behalf.
Contributions do not include additions to the Program which: **(i)** are separate modules of
software distributed in conjunction with the Program under their own license agreement, and *
*(ii)** are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

Expand Down Expand Up @@ -66,17 +66,17 @@ agreement, provided that:

* **a)** it complies with the terms and conditions of this Agreement; and
* **b)** its license agreement:
* **i)** effectively disclaims on behalf of all Contributors all warranties and conditions,
express and implied, including warranties or conditions of title and non-infringement, and
implied warranties or conditions of merchantability and fitness for a particular purpose;
* **ii)** effectively excludes on behalf of all Contributors all liability for damages,
including direct, indirect, special, incidental and consequential damages, such as lost
profits;
* **iii)** states that any provisions which differ from this Agreement are offered by that
Contributor alone and not by any other party; and
* **iv)** states that source code for the Program is available from such Contributor, and
informs licensees how to obtain it in a reasonable manner on or through a medium customarily
used for software exchange.
* **i)** effectively disclaims on behalf of all Contributors all warranties and conditions,
express and implied, including warranties or conditions of title and non-infringement, and
implied warranties or conditions of merchantability and fitness for a particular purpose;
* **ii)** effectively excludes on behalf of all Contributors all liability for damages,
including direct, indirect, special, incidental and consequential damages, such as lost
profits;
* **iii)** states that any provisions which differ from this Agreement are offered by that
Contributor alone and not by any other party; and
* **iv)** states that source code for the Program is available from such Contributor, and
informs licensees how to obtain it in a reasonable manner on or through a medium customarily
used for software exchange.

When the Program is made available in source code form:

Expand Down
23 changes: 15 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
![Static Badge](https://img.shields.io/badge/Java-v17-blue)
![Static Badge](https://img.shields.io/badge/Maven-v3.5.4-blue)
[![License](https://img.shields.io/badge/License-EPL--1.0-green.svg)](LICENSE.md)
[![Build WindowTester](https://github.com/r4fterman/windowtester/actions/workflows/maven.yml/badge.svg)]( https://github.com/r4fterman/windowtester/actions/workflows/maven.yml)
[![Build WindowTester](https://github.com/r4fterman/windowtester/actions/workflows/maven.yml/badge.svg)](https://github.com/r4fterman/windowtester/actions/workflows/maven.yml)
[![codecov](https://codecov.io/gh/r4fterman/windowtester/graph/badge.svg?token=fEDTM853bU)](https://codecov.io/gh/r4fterman/windowtester)

## Disclaimer

Expand All @@ -24,7 +25,6 @@ Using `WindowTester Pro`, developers can easily create tests for every GUI they
The tests generated by `WindowTester Pro` are standard [JUnit](http://junit.org/) tests thus they
can be run within your IDE, or they can be automated to run using [Maven](http://maven.apache.org/).


## Features

- Write automated UI checks as code in JUnit style
Expand All @@ -35,7 +35,7 @@ can be run within your IDE, or they can be automated to run using [Maven](http:/

- JDK 21
- JUnit 5

Supported platforms:

- Windows
Expand All @@ -50,7 +50,7 @@ The runtime library provides base functionality so WindowTester can operate on a
<dependency>
<groupId>io.github.r4fterman</groupId>
<artifactId>com.windowtester.runtime</artifactId>
<version>5.13.4</version>
<version>6.0.0</version>
</dependency>
```

Expand All @@ -60,7 +60,7 @@ The runtime library provides base functionality so WindowTester can operate on J
<dependency>
<groupId>io.github.r4fterman</groupId>
<artifactId>com.windowtester.swing.runtime</artifactId>
<version>5.13.4</version>
<version>6.0.0</version>
</dependency>
```

Expand All @@ -70,7 +70,7 @@ Abbot provides robot functionality to interact with the UI:
<dependency>
<groupId>io.github.r4fterman</groupId>
<artifactId>abbot</artifactId>
<version>5.13.4</version>
<version>6.0.0</version>
</dependency>
```

Expand All @@ -80,10 +80,17 @@ The recorder library provides functionality to record a manual UI interaction an
<dependency>
<groupId>io.github.r4fterman</groupId>
<artifactId>com.windowtester.swing.recorder</artifactId>
<version>5.13.4</version>
<version>6.0.0</version>
</dependency>
```

## Code Style

This project uses the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html).
Code formatting is automatically applied via [spotless-maven-plugin](https://github.com/diffplug/spotless) in a local `pre-commit` hook.

➡️ Contributors don’t need to run anything manually – whenever you commit, your code will be formatted automatically before being pushed.

## License

This project is licensed under the [Eclipse License v1.0](LICENSE.md).
This project is licensed under the [Eclipse License v1.0](LICENSE.md).
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

Here is an overview of the released version and their support status.

| Version | Supported | End of Life |
| ------- | ------------------ |---------------------|
| Version | Supported | End of Life |
|---------|--------------------|---------------------|
| 3.x | :white_check_mark: | Security support |
| 4.x | :white_check_mark: | Security support |
| 5.x | :white_check_mark: | Maintenance support |
Expand Down
10 changes: 8 additions & 2 deletions abbot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.github.r4fterman</groupId>
<artifactId>com.windowtester</artifactId>
<version>6.0.0-SNAPSHOT</version>
<version>6.0.1-SNAPSHOT</version>
</parent>

<artifactId>abbot</artifactId>
Expand All @@ -23,7 +23,6 @@
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.10.1</version>
</dependency>

<dependency>
Expand Down Expand Up @@ -58,6 +57,13 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>dev.dimlight</groupId>
<artifactId>shellcheck-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
5 changes: 2 additions & 3 deletions abbot/src/main/java/abbot/AssertionFailedError.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ public class AssertionFailedError extends RuntimeException {
private File file;
private int line;

public AssertionFailedError() {
}
public AssertionFailedError() {}

public AssertionFailedError(String msg) {
super(msg);
Expand All @@ -41,6 +40,6 @@ private static String getMessage(String msg, Step step) {
}

File file = Script.getFile(step);
return Strings.get("step.failure", new Object[]{msg, file, line});
return Strings.get("step.failure", new Object[] {msg, file, line});
}
}
Loading