Zum Hauptinhalt springen

CleanupTotal Service

wdio-cleanuptotal-service is a 3rd party package, for more information please see GitHub | npm

With the cleanup-total service for webdriver.io, you can easily ensure proper cleanup after each test. The service provides a systematic way to mark entities for deletion immediately after creation. This is particularly useful when tests involve creating complex structures, such as a bank account with an investment plan and a deposit. Without proper cleanup, attempting to delete the account may result in errors, such as a refusal due to the account not being empty. However, with cleanup-total, entities are deleted in the correct order, ensuring that tests clean up after themselves and do not interfere with each other.

Installation

The easiest way to install this module as a (dev-)dependency is by using the following command:

npm install wdio-cleanuptotal-service --save-dev

Usage

Add wdio-cleanuptotal-service to your wdio.conf.ts:

export const config: WebdriverIO.Config = {
// ... other options

services: ['cleanuptotal']

// ... other options
};

or with the service options:

export const config: WebdriverIO.Config = {
// ... other options

services: [
[
'cleanuptotal',
{
// Use a custom logger function to write messages to the test report
customLoggerMethod: console.log(), // TODO: replace with your own logger function if needed

// Only write to the log when an error occurs to reduce clutter
logErrorsOnly: false, // TODO: consider changing to 'true' if you have too many messages in the report
}
]
]

// ... other options
};

Usage in test

You can import the cleanuptotal service wherever it's needed, whether it's in your test file or any other class.

import { cleanuptotal } from "wdio-cleanuptotal-service";

it("should keep things tidy", () => {
// ...

// Create an account and add it to the cleanup list for deletion after the test
const accountId = createAccount("John Blow");
cleanupTotal.addCleanup(async () => {
await deleteAccount(accountId);
});

// Add an investment plan to the account and add it to the cleanup list
addInvestmentPlan(accountId, "ModRisk");
cleanupTotal.addCleanup(async () => {
await removeInvestmentPlan(accountId);
});

// Deposit funds into the account and add it to the cleanup list
deposit(accountId, 1000000);
cleanupTotal.addCleanup(async () => {
await undoDeposit(accountId);
});

// ...

});

// Note that the actual cleanup code will be executed after the test is complete

Typescript support

Typescript is supported for this plugin.

Support

For support and suggestions, feel free to contact me at tzur.paldi@outlook.com.

Welcome! How can I help?

WebdriverIO AI Copilot