Skip to content

chore: Add GitHub Actions workflow for PR validation#2007

Merged
ZheSun88 merged 28 commits into
mainfrom
github-pr-validation
Oct 1, 2025
Merged

chore: Add GitHub Actions workflow for PR validation#2007
ZheSun88 merged 28 commits into
mainfrom
github-pr-validation

Conversation

@Artur-
Copy link
Copy Markdown
Member

@Artur- Artur- commented Sep 22, 2025

Replaces TeamCity PR validation build with GitHub Actions workflow. Includes Maven build, test execution with Sauce Labs integration, and artifact collection for test failures.

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Sep 22, 2025

Test Results

  153 files    153 suites   14m 38s ⏱️
1 128 tests 1 122 ✅ 6 💤 0 ❌
1 498 runs  1 492 ✅ 6 💤 0 ❌

Results for commit f60ac1a.

♻️ This comment has been updated with latest results.

@mshabarov mshabarov requested a review from ZheSun88 September 22, 2025 11:22
Artur- and others added 8 commits September 22, 2025 22:40
…ariable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@ZheSun88
Copy link
Copy Markdown
Contributor

guess this is related to jackson. we can fix it in another PR. @mshabarov

[ERROR] Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:2.1.0:compile (compile) on project vaadin-testbench-unit-shared: Compilation failure: Compilation failure:
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3446&logView=flowAware&linesState=3446)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/BasicUtils.kt:[14,30] Unresolved reference 'databind'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3447&logView=flowAware&linesState=3447)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/BasicUtils.kt:[46,59] Unresolved reference 'ObjectNode'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3448&logView=flowAware&linesState=3448)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[3,30] Unresolved reference 'databind'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3449&logView=flowAware&linesState=3449)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[4,30] Unresolved reference 'databind'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3450&logView=flowAware&linesState=3450)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[5,30] Unresolved reference 'databind'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3451&logView=flowAware&linesState=3451)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[16,77] Unresolved reference 'ObjectNode'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3452&logView=flowAware&linesState=3452)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[17,5] Unresolved reference 'ObjectMapper'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3453&logView=flowAware&linesState=3453)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[30,9] Unresolved reference 'put'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3454&logView=flowAware&linesState=3454)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[43,5] 'has' overrides nothing.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3455&logView=flowAware&linesState=3455)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[48,20] Unresolved reference 'ObjectNode'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3456&logView=flowAware&linesState=3456)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[48,26] Unresolved reference 'get'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3457&logView=flowAware&linesState=3457)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[61,5] 'get' overrides nothing.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3458&logView=flowAware&linesState=3458)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[61,42] Unresolved reference 'JsonNode'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3459&logView=flowAware&linesState=3459)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[68,16] Unresolved reference 'ObjectNode'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3460&logView=flowAware&linesState=3460)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[68,22] Unresolved reference 'get'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3461&logView=flowAware&linesState=3461)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[72,5] 'booleanValue' overrides nothing.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3462&logView=flowAware&linesState=3462)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[77,20] Unresolved reference 'ObjectNode'.
[11:48:48 ](https://teamcity.vaadin.com/buildConfiguration/VaadinTestbench_TestbenchPreCommitBuildMaster/288456?buildTab=log&focusLine=3463&logView=flowAware&linesState=3463)  [ERROR] /opt/agent/work/ef9ade89d4c3cefd/vaadin-testbench-unit-shared/src/main/kotlin/com/vaadin/testbench/unit/internal/Shortcuts.kt:[77,26] Unresolved reference 'booleanValue'.

@mshabarov
Copy link
Copy Markdown
Contributor

Yes, Jackson 3 related failures should be fixed now.

Artur- and others added 13 commits September 28, 2025 11:08
The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@Artur-
Copy link
Copy Markdown
Member Author

Artur- commented Sep 29, 2025

Should work now

@ZheSun88 ZheSun88 enabled auto-merge (squash) September 30, 2025 07:02
@ZheSun88 ZheSun88 merged commit 5517688 into main Oct 1, 2025
4 of 5 checks passed
@ZheSun88 ZheSun88 deleted the github-pr-validation branch October 1, 2025 06:25
ZheSun88 added a commit that referenced this pull request Oct 1, 2025
* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 1, 2025
* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 1, 2025
* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 1, 2025
* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
mcollovati added a commit that referenced this pull request Oct 3, 2025
…2020)

* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* update gha configuration

* format code

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
mcollovati added a commit that referenced this pull request Oct 3, 2025
…2021)

* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* update configuration

* downgrade formatter to be compatible with java 8

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 3, 2025
…2018)

* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* update 9.5 branch and jdk 17

* format the code

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
mcollovati added a commit that referenced this pull request Oct 3, 2025
…2019)

* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* jdk 17 and branch 9.4

* format code

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 10, 2025
* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 10, 2025
* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* chore: cherry pick the Github Action configuration to 5.4

* add TB license

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 10, 2025
* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* chore: cherry pick the Github Action configuration to 5.4

* add TB license

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
ZheSun88 added a commit that referenced this pull request Oct 10, 2025
* chore: Add GitHub Actions workflow for PR validation (#2038)

* chore: Add GitHub Actions workflow for PR validation (#2007)

* chore: Add GitHub Actions workflow for PR validation

Replaces TeamCity PR validation build with GitHub Actions workflow.
Includes Maven build, test execution with Sauce Labs integration,
and artifact collection for test failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update validation.yml

* fix: Update Sauce Connect to v5.x and configure PRO_KEY environment variable

- Upgrade Sauce Connect from 4.9.2 to 5.2.0
- Update command-line arguments to use new v5 syntax (--username, --access-key, --tunnel-name)
- Configure TB_LICENSE secret as PRO_KEY environment variable
- Remove inline license parameter from Maven command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Correct Sauce Connect 5.x download URL format

- Fix URL to include version in path: /sauce-connect/{VERSION}/sauce-connect-{VERSION}_linux.x86_64.tar.gz
- Update to latest version 5.2.3
- Fix extracted directory path (./sauce-connect/sc instead of ./sauce-connect-{VERSION}/sc)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Merge format-check workflow into validation workflow

- Add format-check job to validation workflow to run in parallel with build-and-test
- Remove separate format-check.yml workflow file
- Format validation now runs as part of the main PR validation pipeline

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Maven cache to format-check job

- Add Maven dependency caching to format-check job
- Uses same cache key as build-and-test job for artifact sharing
- Prevents redundant downloads between parallel jobs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Run format-check and build-and-test jobs sequentially

- Add 'needs: format-check' to build-and-test job
- Ensures proper cache sharing between jobs
- Prevents cache conflicts and race conditions
- Format check must pass before build and tests run

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: set TB License

* fix: Correct Sauce Connect binary path for version 5.x

The extracted directory structure for Sauce Connect 5.x is
sc-${VERSION}-linux/bin/sc, not sauce-connect/sc

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Improve Sauce Connect setup and monitoring

- Use hardcoded version in path (5.2.3) instead of variable expansion
- Wait for specific "Sauce Connect is up" message instead of sleeping
- Fail fast if SC process dies or doesn't start within 2 minutes
- Save PID for proper cleanup
- Include SC logs in failure artifacts for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix version

* refactor: Use official sauce-connect-action v3 instead of manual setup

- Replace manual Sauce Connect download and setup with saucelabs/sauce-connect-action@v3
- Remove manual cleanup step as the action handles it automatically
- Simplify tunnel ID management
- Remove sc.log from artifacts as it's not generated with the action

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* use existing version, see saucelabs/sauce-connect-action#101

* Secrets

* .

* region

* fix: Separate error screenshots into their own artifact

Split test artifacts into two separate uploads:
- error-screenshots: Contains only screenshot files from test failures
- test-reports: Contains surefire and failsafe reports

This makes it easier to find and download just the screenshots when debugging failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Enable localhost proxying for Sauce Connect tunnel

Add --proxy-localhost flag to allow Sauce Labs to connect to localhost
addresses, which is required for the test setup.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Use correct proxyLocalhost parameter for Sauce Connect

Replace scArgs with the proper proxyLocalhost: allow parameter
to enable localhost proxying in Sauce Connect tunnel.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* no phantomjs

* fix: Exclude failsafe-summary.xml from test result parsing

Change file patterns to only include TEST-*.xml files, excluding
failsafe-summary.xml which is not in JUnit XML format and causes
the test result publisher to fail.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* upgrade java version to 21 and remove master branch

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* chore: cherry pick the Github Action configuration to 5.4

* add TB license

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>

* Update validation.yml

* add profile

* update browser factory

---------

Co-authored-by: Artur <artur@vaadin.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Marco Collovati <marco@vaadin.com>
Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
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.

4 participants