Commit 44539a3
Migrate Sauce Connect GitHub Action from v2 (SC4) to v3 (SC5) (#624)
* Migrate Sauce Connect GitHub Action from v2 (SC4) to v3 (SC5)
Sauce Connect 4 reached end-of-life and Sauce Labs servers now reject
SC4 tunnel connections with "remote shutdown", causing Integration
Tests to fail after 3 retries (see run 34756631021). Bump
saucelabs/sauce-connect-action to v3, which defaults to Sauce Connect
5, and add the now-required region input to each step.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
* Use full SC5 region identifiers (us-west-1, eu-central-1)
The v3 action's SC5 CLI rejects the short-form region names used by
v2/SC4 ("us-west", "eu-central"): "Option region contains invalid
value, allowed are: us-west-1, us-east-4, eu-central-1, staging".
Confirmed by the failed run on this PR. Update both the action's
region input and the Sauce Connect YAML config files to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
* Use distinct apiAddress per Sauce Connect tunnel to fix readiness race
The action's readiness check polls apiAddress/readyz, which defaults
to ':8032' for every invocation. Running both tunnels on the same
runner meant the EU-Central step's readiness check could observe the
already-running US-West process on the shared port and report ready
immediately, before its own tunnel had actually come up (see PR #624
CI run: EU-Central step ended right after "provisioning Sauce
Connect", never logging "Sauce Connect is up"). Give each tunnel its
own apiAddress (:8032 / :8033) so each readiness check is scoped to
its own process.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
* Remove nick-invision/retry wrapper around Integration Tests
The outer retry reran the entire "mvn clean test" (including a fresh
JVM/clean) up to 3 times on failure, but doesn't restart the Sauce
Connect tunnels. Once SauceConnectEndpointTest's @afterall tears down
all of the account's tunnels at the end of attempt 1, attempts 2 and 3
have no tunnels at all and every Sauce Connect-dependent test fails,
turning one flaky test into a wall of unrelated failures.
Surefire is already configured with -Dsurefire.rerunFailingTestsCount=2,
which reruns individual failing tests within the same Maven/JVM
invocation (tunnels stay up throughout), giving the same flaky-test
protection without the cascade. Keep the 20-minute timeout as a native
step timeout.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
* Increase stopJobTest's status-poll timeout to 60s
stopJobTest was consistently failing with ConditionTimeoutException
waiting for job status to reach "complete" within 20s, across every
CI run in PR #624 (both data centers, every Surefire rerun). Unlike
runTest/runEmulatorTest/runSimulatorTest (which quit the driver
client-side and reliably reach "complete" within 20s), this test stops
the job via the REST API's /stop endpoint, which appears to take
noticeably longer to finalize the job (asset processing, teardown)
than a client-initiated driver.quit(). Give it a 60s budget instead.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
* Bump stopJobTest timeout to 90s based on measured live behavior
60s (the previous attempt) still wasn't enough. Reproduced locally
against the live Sauce Labs API and queried the created jobs directly:
both the US-West and EU-Central jobs report
error="User Abandoned Test -- User terminated" and consistently take
~67-70s (creation_time to end_time) to finalize as "complete" after a
REST-initiated stop. Sauce Labs treats an API stop as an abandoned
session and runs it through an idle-detection grace period before
finalizing, which a client can't speed up. 90s gives comfortable
margin above the observed ~70s. Verified locally: both parameterized
cases now pass in ~69s each.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
* Drop inline comment explaining stopJobTest's 90s timeout
Rationale (Sauce Labs treats a REST stop as an abandoned session with
a ~67-70s idle-detection grace period before finalizing to "complete")
is already captured in the commit history rather than as a code
comment.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EpTwokDRhY4c4hKZXqX35P
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>1 parent a15e5a1 commit 44539a3
6 files changed
Lines changed: 24 additions & 16 deletions
File tree
- .github/workflows
- src/test
- java/com/saucelabs/saucerest/integration
- resources
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
| 79 | + | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
83 | 84 | | |
84 | 85 | | |
| 86 | + | |
85 | 87 | | |
86 | 88 | | |
87 | | - | |
| 89 | + | |
88 | 90 | | |
89 | 91 | | |
90 | 92 | | |
| 93 | + | |
91 | 94 | | |
92 | 95 | | |
| 96 | + | |
93 | 97 | | |
94 | 98 | | |
95 | 99 | | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
| 100 | + | |
| 101 | + | |
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
42 | 43 | | |
43 | 44 | | |
| 45 | + | |
44 | 46 | | |
45 | 47 | | |
46 | | - | |
| 48 | + | |
47 | 49 | | |
48 | 50 | | |
49 | 51 | | |
| 52 | + | |
50 | 53 | | |
51 | 54 | | |
| 55 | + | |
52 | 56 | | |
53 | 57 | | |
54 | 58 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
| 26 | + | |
25 | 27 | | |
26 | 28 | | |
27 | | - | |
| 29 | + | |
28 | 30 | | |
29 | 31 | | |
30 | 32 | | |
| 33 | + | |
31 | 34 | | |
32 | | - | |
| 35 | + | |
| 36 | + | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
399 | 399 | | |
400 | 400 | | |
401 | 401 | | |
402 | | - | |
| 402 | + | |
403 | 403 | | |
404 | 404 | | |
405 | 405 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
0 commit comments