Skip to content

Conversation

@tobi-legan
Copy link

@tobi-legan tobi-legan commented Nov 30, 2025

Description

This PR adds Qase.io test management integration for e2e tests, enabling automatic test result reporting with platform-specific test run naming. It also introduces separate WebdriverIO configurations for iOS and Android platforms, making it easier to run and manage platform-specific tests.

Key additions:

  • Custom Qase API wrapper (qase-wrapper.ts) that provides a qase() function for wrapping test cases
  • Platform-specific WebdriverIO configs: wdio.base.conf.ts, wdio.ios.conf.ts, wdio.android.conf.ts
  • Automatic platform detection and test run naming (e.g., "E2E Test Run [iOS]" or "E2E Test Run [Android]")
  • Error message formatting with ANSI code stripping for clean Qase reports
  • Accurate test duration tracking in milliseconds
  • Updated npm scripts: test:ios, test:android, test:all

Motivation and Context

This change is required to:

  1. Centralize test management: Integrate e2e tests with Qase.io for better test tracking, reporting, and analytics across the team
  2. Improve test organization: The previous setup had a single WebdriverIO config that required manual switching between iOS and Android capabilities, making it difficult to run platform-specific tests and track results separately
  3. Enhance visibility: Automatic test result reporting provides real-time visibility into test execution status on both platforms
  4. Better debugging: Formatted error messages in Qase make it faster to identify and fix test failures
  5. CI/CD readiness: Foundation for automated test reporting in CI/CD pipelines

The problem this solves: Previously, there was no way to automatically track test results in a centralized test management system, and running tests for different platforms required manual configuration changes.

Related Issue

PR fixes the following issue: N/A (New feature implementation - no existing issue)

Type of change

  • Bug fix (non-breaking change which fixes an issue)

  • New feature (non-breaking change which adds functionality)

  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

  • This change requires a documentation update


- Introduced E2E testing framework in the `e2e` directory, including configuration files and test scripts.
- Added `HomeOnboardingScreen` page object for managing onboarding screen interactions.
- Implemented initial test for wallet app onboarding, verifying UI elements and welcome messages.
- Updated `.gitignore` to exclude E2E test artifacts and configuration files.
- Modified `app.json` to disable development client for production builds.
- Added `package-lock.json` and `package.json` for E2E testing dependencies.
… multi-platform config support

- Add Qase.io test management integration
- Create platform-specific WebdriverIO configs (iOS/Android)
- Implement qase() wrapper for automatic test result reporting
- Add platform detection for test run naming ([iOS]/[Android])
- Support both iOS and Android e2e testing
- Update README with platform-specific test commands
// Cross-platform text selector
// For iOS: Use class chain or accessibility ID
// For Android: UiSelector works
const isIOS = (driver as any).capabilities.platformName === 'iOS';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possible to use a type here instead of any ?

describe('Onboarding Screen', () => {
it('TW-1: First launch', qase('TW-1', async () => {
// Wait for app to load
await driver.pause(3000);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefer to use toBeDisplayed or other waits instead of pause

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is done

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty file

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this has been removed

* Provides a qase() function that matches @tetherto/qase-utils API
*/

import stripAnsi from 'strip-ansi';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this dependency be included in package.json?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah we need it for our integration to our test management tool , we send test reports to Qase so we can see test runs formthe tests

e2e/package.json Outdated
"@wdio/local-runner": "^9.13.0",
"@wdio/mocha-framework": "^9.13.0",
"@wdio/spec-reporter": "^9.13.0",
"qase-api-client": "^1.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also listed in devDependencies, would remove from here.

@jonathunne
Copy link
Contributor

@tobi-legan , aside from the comments above - I agree with @ignaciolarranaga 's comment on #11 that this (and #11) doesn't need to be a seperate project with new package.json

- Added configuration files for E2E testing in the `test/e2e` directory.
- Created `HomeOnboardingScreen` page object for managing onboarding interactions.
- Developed initial test for wallet app onboarding, verifying UI elements and welcome messages.
- Updated `package.json` and `package-lock.json` to include necessary dependencies for testing.
- Modified `.gitignore` to exclude test artifacts and configuration files.
- Removed legacy E2E testing setup from `e2e` directory.
- Added `dotenv`, `qase-api-client`, and `strip-ansi` to `package.json` and `package-lock.json`.
- Updated test specifications path in `wdio.base.conf.ts` to point to the new structure.
- Removed legacy `wdio.conf.ts` file.
- Adjusted TypeScript configuration to exclude `node_modules` and `e2e` directories.
- Replace all 'any' types with proper TypeScript types (WebdriverIO.Capabilities, Record<string, unknown>, etc.)
- Fix Android APK path in wdio.android.conf.ts (test/apps/app-release.apk)
- Fix Android test script in package.json to use wdio.android.conf.ts
- Add missing driver import in home-onboarding-screen.ts
- All tests passing on both iOS and Android
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants