mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 18:41:14 +00:00
test: Migrate 3 specs from Cypress - Playwright (#19269)
This commit is contained in:
123
packages/testing/playwright/services/variables-api-helper.ts
Normal file
123
packages/testing/playwright/services/variables-api-helper.ts
Normal file
@@ -0,0 +1,123 @@
|
||||
import type { ApiHelpers } from './api-helper';
|
||||
import { TestError } from '../Types';
|
||||
|
||||
interface VariableResponse {
|
||||
id: string;
|
||||
key: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface CreateVariableDto {
|
||||
key: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface UpdateVariableDto {
|
||||
key?: string;
|
||||
value?: string;
|
||||
}
|
||||
|
||||
export class VariablesApiHelper {
|
||||
constructor(private api: ApiHelpers) {}
|
||||
|
||||
/**
|
||||
* Create a new variable
|
||||
*/
|
||||
async createVariable(variable: CreateVariableDto): Promise<VariableResponse> {
|
||||
const response = await this.api.request.post('/rest/variables', { data: variable });
|
||||
|
||||
if (!response.ok()) {
|
||||
throw new TestError(`Failed to create variable: ${await response.text()}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
return result.data ?? result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all variables
|
||||
*/
|
||||
async getAllVariables(): Promise<VariableResponse[]> {
|
||||
const response = await this.api.request.get('/rest/variables');
|
||||
|
||||
if (!response.ok()) {
|
||||
throw new TestError(`Failed to get variables: ${await response.text()}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
return result.data ?? result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a variable by ID
|
||||
*/
|
||||
async getVariable(id: string): Promise<VariableResponse> {
|
||||
const response = await this.api.request.get(`/rest/variables/${id}`);
|
||||
|
||||
if (!response.ok()) {
|
||||
throw new TestError(`Failed to get variable: ${await response.text()}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
return result.data ?? result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a variable by ID
|
||||
*/
|
||||
async updateVariable(id: string, updates: UpdateVariableDto): Promise<VariableResponse> {
|
||||
const response = await this.api.request.patch(`/rest/variables/${id}`, { data: updates });
|
||||
|
||||
if (!response.ok()) {
|
||||
throw new TestError(`Failed to update variable: ${await response.text()}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
return result.data ?? result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a variable by ID
|
||||
*/
|
||||
async deleteVariable(id: string): Promise<void> {
|
||||
const response = await this.api.request.delete(`/rest/variables/${id}`);
|
||||
|
||||
if (!response.ok()) {
|
||||
throw new TestError(`Failed to delete variable: ${await response.text()}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all variables (useful for test cleanup)
|
||||
*/
|
||||
async deleteAllVariables(): Promise<void> {
|
||||
const variables = await this.getAllVariables();
|
||||
|
||||
// Delete variables in parallel for better performance
|
||||
await Promise.all(variables.map((variable) => this.deleteVariable(variable.id)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a test variable with a unique key
|
||||
*/
|
||||
async createTestVariable(
|
||||
keyPrefix: string = 'TEST_VAR',
|
||||
value: string = 'test_value',
|
||||
): Promise<VariableResponse> {
|
||||
const key = `${keyPrefix}_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
|
||||
return await this.createVariable({ key, value });
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up variables by key pattern (useful for test cleanup)
|
||||
*/
|
||||
async cleanupTestVariables(keyPattern?: string): Promise<void> {
|
||||
const variables = await this.getAllVariables();
|
||||
|
||||
const variablesToDelete = keyPattern
|
||||
? variables.filter((variable) => variable.key.includes(keyPattern))
|
||||
: variables.filter((variable) => variable.key.startsWith('TEST_'));
|
||||
|
||||
await Promise.all(variablesToDelete.map((variable) => this.deleteVariable(variable.id)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user