Hello everyone,
We’re pleased to announce Testwise v0.2.0 (beta), a major milestone release that marks a big step in model-driven test automation for Thinkwise applications.
This release significantly reduces setup effort by introducing automatically generated Subject Page Objects, providing a consistent and extensible foundation for building end-to-end tests. As always, this Testwise version is compatible with the latest Universal GUI version available at the time of release.
Do you have any questions or suggestions? Let us know in the Thinkwise Community!
About Testwise
Testwise is a Playwright-based support library built specifically for Thinkwise applications. It provides helpers and abstractions aligned with Thinkwise concepts, reducing boilerplate and making end-to-end tests easier to write and maintain.
Testwise can be adopted incrementally and works alongside existing testing approaches. Learn more about Testwise here.
Contents
What’s New in v0.2.0
Model-Driven Subject Page Generation
Testwise can now generate ready-to-use Subject Page Objects directly from your Thinkwise Application model. Effectively, Testwise now performs a couple of API calls to the IAM of the Application you’re testing, in order to retrieve and prebuild all relevant information about the Subject and Screen Type combinations of your Application.
These generated pages include:
- A fully initialized page context
- Standard layouts (forms, grids, tabs)
- Toolbars and common actions
- Built-in helper methods and utilities
By generating these artifacts, Testwise also takes ownership of their ongoing maintenance.
As the platform evolves, improvements and fixes to these generated pages are handled centrally, meaning you benefit automatically without having to maintain this code yourself.
This removes the need to manually wire components for every new page and provides a consistent structure across projects.
This change requires you to a dedicated Playwright Project for each Thinkwise Application you test, to prevent risk of overrides and corruption of Subject and Screen Type information.
Reduced Boilerplate & Faster Setup
By extending generated Subject Pages instead of building everything from scratch, teams can:
- Eliminate repetitive setup code
- Get productive faster when adding new pages or tests
- Reduce long-term maintenance effort
- Focus on test logic instead of plumbing
Existing approaches continue to work alongside this new functionality, allowing you to adopt it incrementally.
Predictable Naming & Structure
Generated pages follow a clear and consistent naming convention based on:
- Subject name
- Screen type (Main, Detail, Popup, Zoom)
- Optional variants
This makes generated artifacts predictable, easy to import, and reusable across tests.
Installation Notes (v0.2.0 beta)
Existing Testwise users
If you already have Testwise set up:
- Update
testwise.json
Add the required configuration underenvironmentSettings:{
"environmentSettings": {
"baseUrl": "https://<your-environment>",
"serviceUrl": "https://<your-environment>/service",
"metaEndpoint": "iam",
"authUser": "<username>",
"authUserPassword": "<password>",
"guiApplAlias": "<application-alias>"
}
}
- Install the beta version
No further install steps are required.npm i @thinkwise/testwise@0.2.0-beta.22
New users
If this is your first time installing Testwise:
- Install Testwise
This automatically initializes the project and generates anpm i @thinkwise/testwise@0.2.0-beta.22testwise.jsonfile. - Update configuration
Replace the example values intestwise.jsonwith your actual environment and authentication details. - Sync the model
npx testwise sync - Continue with Step 4 of the Testwise documentation.
A note about Model synchronization:
-
If your
testwise.jsonconfiguration is already in place before installing this version, the model and artifacts are generated automatically during installation. -
If you install first and add or update configuration afterwards, you will need to run:
npx testwise syncThe documentation currently still references npx testwise install. This step is no longer required for the v0.2.0 beta, but remains valid for the latest stable versions (v0.1.x). Documentation will be updated once v0.2.0 exits beta.
Using the Generated Artifacts
This release generates Subject Page Objects that you can directly import and use in your tests or extend in your own pages. Below are two examples to help you get started.
Naming convention (important)
Generated artifacts follow this naming pattern:
<SubjectName><Variant?><ScreenType>Rules
- Subject name is converted from snake_case to PascalCase
- Screen type is one of:
- Main
- Detail
- Popup
- Zoom
- Variants (if used) are inserted between subject name and screen type, also in PascalCase
Examples:
| Model subject | Variant | Screen | Generated name |
|---|---|---|---|
category | - | Main | CategoryMain |
category | - | Detail | CategoryDetail |
category | Admin | Main | CategoryAdminMain |
Before – Testwise v0.1.x (manual setup in test)
Manual navigation and manual component lookup inside the test.
import { test } from "@thinkwise/testwise";
test("test", async ({ page }) => {
// Navigate to the subject (example path — whatever you used in 0.1.x)
await page.goToDeepLink('subject=category')
// Manual component wiring (example – locate the input yourself)
const nameInput = page.getByTestId("form-field__name__control");
await nameInput.fill("Category A");
});
Characteristics
- Test owns navigation logic
- Test knows DOM details (such as
testId) - Repeated code wiring across tests
- If the UI changes, the test changes
After – Testwise v0.2.0 (beta) (generated Subject Page Object)
Use a generated Subject Page Object with pre-wired components.
import { test } from "@thinkwise/testwise";
import { CategoryMain } from "@thinkwise/testwise/subjects/category";
test("test", async ({ page }) => {
const categoryPage = new CategoryMain(page);
await categoryPage.form2.nameInput.fill("Category A");
});
What changed
- No manual “find UI” wiring in the test
- The test reads like intent (page → form → input field)
- Generated artifacts are maintained by Testwise (less maintenance on your side)
Summary
- Generated Subject Pages are ready to use
- You can import them directly in tests
- Or extend them in your own page objects
- Naming is predictable and based on your Thinkwise model
More advanced patterns and guidance will be shared in upcoming sessions and documentation.
Coming Next
We’ll be validating this new approach through:
- A Knowledge Session
- A hands-on Workshop immediately after the Knowledge Session
Based on feedback, we’ll expand the documentation and publish deeper technical blogs covering best practices, patterns, and advanced usage.
