Skip to content

Commit 8ad60fa

Browse files
AlbertoDeckowclaude
andcommitted
Rerun the live-Portal tests when a Portal appears, and expect Cancel
Whether a Portal is running decides whether the live tests run or skip, and it was not a task input: a run with a Portal reused the results of one without, and reported every live test as skipped, green. The NOWHERE_E2E_* variables are inputs now. Checked both ways without --rerun: 4 classes skip without a Portal, none with one. DesignRuleUiTest expected the connecting button to read Connecting; it reads Cancel since the UI change. The suite is 70 of 70. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 44a2005 commit 8ad60fa

3 files changed

Lines changed: 11 additions & 4 deletions

File tree

‎app/build.gradle.kts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,12 @@ tasks.withType<Test>().configureEach {
651651
inputs.dir("src/main/assets").withPropertyName("assets").withPathSensitivity(PathSensitivity.RELATIVE)
652652
inputs.dir("src/main/jni").withPropertyName("native").withPathSensitivity(PathSensitivity.RELATIVE)
653653
inputs.dir("../conformance/vectors").withPropertyName("vectors").withPathSensitivity(PathSensitivity.RELATIVE)
654+
// The live-Portal tests skip without these, so whether a Portal is running
655+
// is an input too. Undeclared, a run with a Portal reused the results of a
656+
// run without one, and reported every live test as skipped, green.
657+
listOf("NOWHERE_E2E_PORTAL", "NOWHERE_E2E_KEY", "NOWHERE_E2E_PIN", "NOWHERE_BIN", "SOMEWHERE_QUIC_LIBRARY").forEach { name ->
658+
inputs.property("env.$name", providers.environmentVariable(name).orElse(""))
659+
}
654660
}
655661

656662
// ── The shipped release APK, checked as a file ──────────────────────────────

‎app/src/androidTest/kotlin/eu/nodepass/somewhere/ui/DesignRuleUiTest.kt‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ class DesignRuleUiTest {
228228

229229
listOf(
230230
Triple(true, false, R.string.action_disconnect),
231-
Triple(false, true, R.string.home_connecting),
231+
// Cancel while connecting: that is what a tap does then (docs/ux.md).
232+
Triple(false, true, R.string.action_cancel),
232233
Triple(false, false, R.string.action_connect),
233234
).forEach { (connected, connecting, action) ->
234235
session =
@@ -256,7 +257,7 @@ class DesignRuleUiTest {
256257
// file from the same field. A second state source shows up here as
257258
// the two disagreeing, which is precisely what was once on screen.
258259
compose.onAllNodesWithText(sectionLabel(otherHeading)).assertCountEquals(0)
259-
listOf(R.string.action_connect, R.string.action_disconnect, R.string.home_connecting)
260+
listOf(R.string.action_connect, R.string.action_disconnect, R.string.action_cancel)
260261
.filter { it != action }
261262
.forEach { compose.onAllNodesWithText(string(it)).assertCountEquals(0) }
262263
}

‎conformance/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ x86_64 and an API 35 x86_64 emulator:**
8080
- `e2e-fakeip.sh` — passes over TLS and QUIC: 20 MiB by a name only the
8181
Portal's network can resolve, over IPv4 and a synthetic IPv6 address, and the
8282
origin hears only from the Portal.
83-
- `e2e-android.sh` — the whole instrumentation suite, **68 tests, none
84-
failing**, three runs in a row. It installs, pre-grants VPN consent and runs
83+
- `e2e-android.sh` — the whole instrumentation suite, **70 tests, none
84+
failing**. It installs, pre-grants VPN consent and runs
8585
with `am instrument` (`connectedAndroidTest` reinstalls and drops the
8686
grant), beside `quic-origin.py`, the origin and UDP echo the QUIC cases dial.
8787
- `e2e-tunnel-fetch.sh` — not re-run at v3.1.0; it last passed on 2026-10-21 at

0 commit comments

Comments
 (0)