Skip to content

Conversation

@btwshivam
Copy link
Contributor

Playwright Configuration

  • Enable fullyParallel for concurrent test execution
  • Add dynamic worker count (4 workers in CI, 100% locally)
  • Add blob reporter for sharding support
  • Increase timeouts: test (60s), expect (10s), action (15s), navigation (30s)
  • Increase webServer timeout to 3 minutes for CI stability

Global Setup Improvements

  • Replace networkidle with domcontentloaded for reliability
  • Add waitForPageReady with fallback strategies
  • Make warmup non-blocking on failure
  • Increase warmup timeout to 60 seconds

GitHub Workflow (playwright.yml)

  • Add 4-way test sharding (1/4, 2/4, 3/4, 4/4)
  • Enable 4 parallel workers per shard
  • Add merge-reports job for combined HTML reports
  • Set fail-fast: false to complete all shards
  • Reduce job timeout to 30 minutes per shard
  • Upload blob reports for merging, test results on failure only

Test File Fixes

  • BasePage: default to domcontentloaded instead of networkidle
  • ITSPage: use domcontentloaded in waitForReady
  • Install.spec.ts: use domcontentloaded with content check
  • ObjectExplorerNavigation.spec.ts: use domcontentloaded

Dependabot & Labeler

  • Fix npm directory from / to /frontend
  • Add github-actions ecosystem updates
  • Group minor/patch updates to reduce PR noise
  • Add tests and helm labels

Performance: ~60min -> ~15-20min (12 parallel jobs)"

Copilot AI review requested due to automatic review settings December 9, 2025 17:26
@kubestellar-prow kubestellar-prow bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Dec 9, 2025
@btwshivam
Copy link
Contributor Author

@kunal-511 PTAL!

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR implements parallel test execution with sharding to dramatically reduce Playwright test execution time from ~60 minutes to ~15-20 minutes. It achieves this through 4-way test sharding across 3 browsers (12 parallel jobs total) with improved wait strategies and timeout configurations for better CI reliability.

Key Changes:

  • Implements 4-way test sharding with blob reporter for result merging
  • Switches from 'networkidle' to 'domcontentloaded' wait strategy for faster, more reliable page loads
  • Adds dynamic worker configuration (4 workers per shard in CI, 100% CPU utilization locally)
  • Fixes Dependabot npm directory from root to /frontend

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
frontend/playwright.config.ts Adds worker count logic, timeout configurations (60s test, 10s expect, 15s action, 30s navigation), and blob reporter for sharding support
frontend/playwright.global-setup.ts Implements waitForPageReady with fallback strategies and switches warmup from networkidle to domcontentloaded
frontend/e2e/pages/base/BasePage.ts Changes default wait state from networkidle to domcontentloaded
frontend/e2e/pages/ITSPage.ts Updates waitForReady to use domcontentloaded with retry logic for table visibility
frontend/e2e/Install.spec.ts Replaces networkidle with domcontentloaded and adds content check via waitForFunction
frontend/e2e/ObjectExplorerNavigation.spec.ts Switches to domcontentloaded with additional timeout buffers
.github/workflows/playwright.yml Implements 4-way sharding matrix, merge-reports job, and conditional artifact uploads
.github/labeler.yml Adds tests and helm label patterns
.github/dependabot.yml Fixes npm directory, adds GitHub Actions ecosystem, and groups minor/patch updates

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@btwshivam
Copy link
Contributor Author

@clubanderson Please merge this after all ci passes

@clubanderson
Copy link
Contributor

ok - not passing yet

@btwshivam
Copy link
Contributor Author

hmm.. some test are failing because of Replace networkidle with domcontentloaded.. ill fix it tommrow

@btwshivam
Copy link
Contributor Author

have to rerun the whole loaclly then fix

@btwshivam
Copy link
Contributor Author

but parallel test execution with sharding worked 12 job

@btwshivam
Copy link
Contributor Author

from 60 min to 20 min

@btwshivam
Copy link
Contributor Author

btwshivam commented Dec 9, 2025

@Arpit529Srivastava @alokdangre can you guys help in this.. with this PR test files and fix.. commit in this same pr

@btwshivam
Copy link
Contributor Author

login is failing majorly..

@btwshivam
Copy link
Contributor Author

btwshivam commented Dec 9, 2025

@alokdangre @Arpit529Srivastava there are more then 15 flasky test are there in shard 2/4.. you guys need to fix it or remove it

@btwshivam
Copy link
Contributor Author

btwshivam commented Dec 9, 2025

you guys can test like npx playwright test --project=chromium --shard=2/4 --reporter=line 2>&1 | tail -8

@alokdangre
Copy link
Contributor

alokdangre commented Dec 13, 2025

@btwshivam i have added commits to this pr and made a pr in your fork plzz check it and run the ci also to check the if it works
It is working locally I checked it and then pushed commits
pr: btwshivam#3

@btwshivam
Copy link
Contributor Author

@alokdangre i cant see your comments.. u need to cclick on finish review button

@btwshivam
Copy link
Contributor Author

@alokdangre @Arpit529Srivastava still failing..

@btwshivam
Copy link
Contributor Author

@alokdangre The global setup warmup is failing because networkidle timeout is being reached. The main issue is that the app uses MSW for mocking and may have pending connections. hve to use domcontentloaded instead of networkidle

@alokdangre
Copy link
Contributor

alokdangre commented Dec 13, 2025

@alokdangre The global setup warmup is failing because networkidle timeout is being reached. The main issue is that the app uses MSW for mocking and may have pending connections. hve to use domcontentloaded instead of networkidle

I have added few more commits as you said

@alokdangre
Copy link
Contributor

the tests are failing becuase of timeout, the content of pages are taking time to load, this is so random, like we can see, the tests which passed earlier failed now (with no changes made to them) and which failed earlier passed now,
currently researching the solution

@btwshivam
Copy link
Contributor Author

Alright!.. Guys Finally Worked..

@btwshivam
Copy link
Contributor Author

@clubanderson It Worked 60 min to 15 min Transformation.. @alokdangre Thanks for the help!

@btwshivam
Copy link
Contributor Author

@clubanderson Merge it!

@btwshivam
Copy link
Contributor Author

/ok-to-test

@kubestellar-prow kubestellar-prow bot added the ok-to-test Indicates a non-member PR verified by an org member that is safe to test. label Dec 13, 2025
@btwshivam
Copy link
Contributor Author

/lgtm
/approve

@kubestellar-prow
Copy link

@btwshivam: you cannot LGTM your own PR.

Details

In response to this:

/lgtm
/approve

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@kubestellar-prow
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: btwshivam

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubestellar-prow kubestellar-prow bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Dec 13, 2025
@btwshivam btwshivam added the lgtm Indicates that a PR is ready to be merged. label Dec 13, 2025
@kubestellar-prow kubestellar-prow bot merged commit 994fe9f into kubestellar:dev Dec 13, 2025
25 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in KubeStellar UI Project Dec 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. ci frontend lgtm Indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants