Skip to main content

Release notes - Testwise v0.2.0-beta.22 (Beta)

Related products:Testwise
  • January 6, 2026
  • 0 replies
  • 85 views
Poonam
Moderator
Forum|alt.badge.img+2

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:

  1. Update testwise.json
    Add the required configuration under environmentSettings:
    {
      "environmentSettings": {
        "baseUrl": "https://<your-environment>",
        "serviceUrl": "https://<your-environment>/service",
        "metaEndpoint": "iam",
        "authUser": "<username>",
        "authUserPassword": "<password>",
        "guiApplAlias": "<application-alias>"
      }
    }
  1. Install the beta version
    npm i @thinkwise/testwise@0.2.0-beta.22
    No further install steps are required.

New users

If this is your first time installing Testwise:

  1. Install Testwise
    npm i @thinkwise/testwise@0.2.0-beta.22
    This automatically initializes the project and generates a testwise.json file.
  2. Update configuration
    Replace the example values in testwise.json with your actual environment and authentication details.
  3. Sync the model
    npx testwise sync
  4. Continue with Step 4 of the Testwise documentation.

 A note about Model synchronization:

  • If your testwise.json configuration 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 sync

 

The 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:

Based on feedback, we’ll expand the documentation and publish deeper technical blogs covering best practices, patterns, and advanced usage.