From 32e0b1efa58a65a43333c4b4cd68459570168495 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova Date: Thu, 2 Apr 2026 14:45:25 +0200 Subject: [PATCH 1/5] Ensure repo is created before file creation Signed-off-by: Dominika Zemanovicova --- docs/changelog.md | 8 +++++++- package.json | 2 +- src/playwright/helpers/api-helper.ts | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index a62bbd3..5ba3a83 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,7 +2,13 @@ All notable changes to this project will be documented in this file. -## [1.1.24] - Current +## [1.1.25] - Current + +### Fixed + +- **APIHelper.createGitHubRepoWithFile**: Ensure file creation happens after repository creation. + +## [1.1.24] ### Added diff --git a/package.json b/package.json index d3c97c7..94b19c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@red-hat-developer-hub/e2e-test-utils", - "version": "1.1.24", + "version": "1.1.25", "description": "Test utilities for RHDH E2E tests", "license": "Apache-2.0", "repository": { diff --git a/src/playwright/helpers/api-helper.ts b/src/playwright/helpers/api-helper.ts index 66dba80..f0044ca 100644 --- a/src/playwright/helpers/api-helper.ts +++ b/src/playwright/helpers/api-helper.ts @@ -80,6 +80,8 @@ export class APIHelper { // Create the repository await APIHelper.createGitHubRepo(owner, repoName); + await new Promise((resolve) => setTimeout(resolve, 2000)); + // Add the specified file await APIHelper.createFileInRepo( owner, From d2f86b659a8f51a800e36ac41a2d46d508775261 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova Date: Wed, 8 Apr 2026 13:39:32 +0200 Subject: [PATCH 2/5] Poll repository creation Signed-off-by: Dominika Zemanovicova --- src/playwright/helpers/api-endpoints.ts | 6 ++++-- src/playwright/helpers/api-helper.ts | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/playwright/helpers/api-endpoints.ts b/src/playwright/helpers/api-endpoints.ts index 15c4e65..f0f9506 100644 --- a/src/playwright/helpers/api-endpoints.ts +++ b/src/playwright/helpers/api-endpoints.ts @@ -16,13 +16,15 @@ export const GITHUB_API_ENDPOINTS = { workflowRuns: `${backstageShowcaseAPI}/actions/runs?per_page=${perPage}`, + createRepo: (owner: string) => `${getOrgUrl(owner)}/repos`, + + getRepo: getRepoUrl, + deleteRepo: getRepoUrl, mergePR: (owner: string, repoName: string, pullNumber: number) => `${getRepoUrl(owner, repoName)}/pulls/${pullNumber}/merge`, - createRepo: (owner: string) => `${getOrgUrl(owner)}/repos`, - pullFiles: (owner: string, repoName: string, pr: number) => `${getRepoUrl(owner, repoName)}/pulls/${pr}/files`, diff --git a/src/playwright/helpers/api-helper.ts b/src/playwright/helpers/api-helper.ts index f0044ca..5ad0242 100644 --- a/src/playwright/helpers/api-helper.ts +++ b/src/playwright/helpers/api-helper.ts @@ -80,7 +80,22 @@ export class APIHelper { // Create the repository await APIHelper.createGitHubRepo(owner, repoName); - await new Promise((resolve) => setTimeout(resolve, 2000)); + // Wait until repository is created + await expect + .poll( + async () => { + const res = await APIHelper.githubRequest( + "GET", + GITHUB_API_ENDPOINTS.getRepo(owner, repoName), + ); + return res.status(); + }, + { + timeout: 30_000, + intervals: [1000, 2000], + }, + ) + .toBe(200); // Add the specified file await APIHelper.createFileInRepo( From 5c7801def6f1f600f8318bc0a3d293b614e40d25 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova Date: Wed, 8 Apr 2026 13:40:37 +0200 Subject: [PATCH 3/5] Add getOrg gh endpoint Signed-off-by: Dominika Zemanovicova --- src/playwright/helpers/api-endpoints.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/playwright/helpers/api-endpoints.ts b/src/playwright/helpers/api-endpoints.ts index f0f9506..aa8e5ac 100644 --- a/src/playwright/helpers/api-endpoints.ts +++ b/src/playwright/helpers/api-endpoints.ts @@ -16,6 +16,8 @@ export const GITHUB_API_ENDPOINTS = { workflowRuns: `${backstageShowcaseAPI}/actions/runs?per_page=${perPage}`, + getOrg: getOrgUrl, + createRepo: (owner: string) => `${getOrgUrl(owner)}/repos`, getRepo: getRepoUrl, From fe72fe43872a78602c414586260edc2c9132f1f7 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova Date: Wed, 8 Apr 2026 15:42:04 +0200 Subject: [PATCH 4/5] Update version Signed-off-by: Dominika Zemanovicova --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b278af1..7e0ad02 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@red-hat-developer-hub/e2e-test-utils", - "version": "1.1.27", + "version": "1.1.28", "description": "Test utilities for RHDH E2E tests", "license": "Apache-2.0", "repository": { From 6c527b799f7ac19651424a256f467c5fc2c71d00 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova Date: Wed, 8 Apr 2026 16:52:19 +0200 Subject: [PATCH 5/5] Update intervals Signed-off-by: Dominika Zemanovicova --- src/playwright/helpers/api-helper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/playwright/helpers/api-helper.ts b/src/playwright/helpers/api-helper.ts index 5ad0242..9495378 100644 --- a/src/playwright/helpers/api-helper.ts +++ b/src/playwright/helpers/api-helper.ts @@ -92,7 +92,7 @@ export class APIHelper { }, { timeout: 30_000, - intervals: [1000, 2000], + intervals: [5000], }, ) .toBe(200);