mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-24 06:13:39 +00:00
ci: check that a page of chats already listed adds nothing to the search results
The iOS and desktop smoke tests looked for the note "All results on this page are already in your chats", which the app no longer shows. As nothing marks the end of a search that adds no row, they wait out the request (it times out after 10 s), retry once if it failed, and check the listed chat, no result row for it, no Open and no note. The test plans, prompts and READMEs say the same, and New chat's results as one group with the matching contacts first.
This commit is contained in:
1 parent
7b18bf89cd
commit
a429a5c6f1
7 files changed
+37
-19
No files matched your search
@@ -24,7 +24,7 @@ Queueing for a runner adds from under a minute to 20 minutes. Results are artifa
|
||||
## Scripts
|
||||
|
||||
- `ui`: the UI driver. Compose for Desktop has no accessibility tree on Linux, so it finds text on screenshots by OCR (tesseract) and acts with xdotool on an Xvfb display. `ui` alone prints its commands: start (with app settings), shot, text, find, wait, click, right-click, click-text, scroll, type, key, avatar (a profile image's colour), ink (a text's height), do (several in a row), stop. `screen-text.py`, `screen-colour.py` and `screen-ink.py` are its helpers.
|
||||
- `smoke-test.sh <app dir> <out dir> [start|onboarding|setup|backend|search]`: the scripted cases; the default is onboarding and both layouts. `setup` also creates a local group and makes the test SMP server the app's only names server; `backend` does that, connects to the seeded name, and checks both layouts; `search`, which the workflow runs when the backend started, also searches in both layouts: "Search in Directory" for "ci seed", which with the toolbar at the bottom first asks "Enable Directory search?" (Cancel searches nothing and keeps "Search in Directory", then Enable searches; no later search asks), and the search for the name `seeded` with Enter, which shows the local chat and the directory results with no "Names" header and no `ci_contact` row, keeps "Connect to seeded.testing", and orders "Connect to …", the local chat, then the results from the field; and with the toolbar at the bottom the same search in the New chat sheet. It checks one list without a "Directory" header, "Open" in each result's row, avatars, counts, the load row ("Load more" and "1 left" after the first page, read apart because OCR can misread the middle dot), no "Search in Directory" while results show, the cards hidden while results show, and, with the toolbar at the bottom, a right click on `#ci_group` opening a menu with "Open". It then opens `ci_channel` with its row's Open (the prepared channel with "Tap Join channel", no "Open channel" alert on the way, the subscriber count in the toolbar and the banner), joins it, and checks, in both layouts, the note "All results on this page are already in your chats" when the typed `ci_channel` finds only the listed chat, and, with "seeded notes" open and `ci seed` typed, `ci_channel` as its chat's row among the results (OCR reads no `#` before its name and no "Open" next to it; `#ci_group` keeps "Open") that opens the channel without an alert; and the same row in the New chat sheet. A passing search run logs 143 checks, the backend's two included, 117 of them before Open on `ci_channel`.
|
||||
- `smoke-test.sh <app dir> <out dir> [start|onboarding|setup|backend|search]`: the scripted cases; the default is onboarding and both layouts. `setup` also creates a local group and makes the test SMP server the app's only names server; `backend` does that, connects to the seeded name, and checks both layouts; `search`, which the workflow runs when the backend started, also searches in both layouts: "Search in Directory" for "ci seed", which with the toolbar at the bottom first asks "Enable Directory search?" (Cancel searches nothing and keeps "Search in Directory", then Enable searches; no later search asks), and the search for the name `seeded` with Enter, which shows the local chat and the directory results with no "Names" header and no `ci_contact` row, keeps "Connect to seeded.testing", and orders "Connect to …", the local chat, then the results from the field; and with the toolbar at the bottom the same search in the New chat sheet. It checks one list without a "Directory" header, "Open" in each result's row, avatars, counts, the load row ("Load more" and "1 left" after the first page, read apart because OCR can misread the middle dot), no "Search in Directory" while results show, the cards hidden while results show, and, with the toolbar at the bottom, a right click on `#ci_group` opening a menu with "Open". It then opens `ci_channel` with its row's Open (the prepared channel with "Tap Join channel", no "Open channel" alert on the way, the subscriber count in the toolbar and the banner), joins it, and checks, in both layouts, that the typed `ci_channel`, which finds only the listed chat, adds no row and no note (it waits out the request, as nothing marks its end), and, with "seeded notes" open and `ci seed` typed, `ci_channel` as its chat's row among the results (OCR reads no `#` before its name and no "Open" next to it; `#ci_group` keeps "Open") that opens the channel without an alert; and the same row in the New chat sheet. A passing search run logs 145 checks, the backend's two included, 117 of them before Open on `ci_channel`.
|
||||
- `backend.sh start <tar.gz> <dir>` / `resume <tar.gz> <dir>` / `stop <dir>`: the test backend, below; `resume` starts the same backend again from a stopped work dir, for the Claude job.
|
||||
- `claude-test.sh`, `claude-test.md` (the prompt), `claude-search.md` (the prompt when the backend runs), `claude-scope` (whether the prompt uses the test backend), `claude-guard.py`, `claude-usage.py`: the Claude job.
|
||||
- `build-core.sh`, `install-core.sh`, `build-backend.sh`, `earlier-run.sh`, `release-app.sh`, `test-summary.py`: builds, reuse and reports.
|
||||
|
||||
@@ -48,11 +48,11 @@ Run all of A and B in the default layout, with the toolbar at the bottom. Then m
|
||||
**C. Opening from the results, and no duplicates.** Run it once, at the end, in the layout you are in then (the layouts draw these the same way). Clear the search field (Escape) before each step.
|
||||
|
||||
1. Search `ci seed` with "Search in Directory" (no alert asks). Click "Open" in the #ci_channel row: the channel opens in the right pane, not yet joined, with "Tap Join channel", its subscriber count both under its name in the toolbar and in the banner, and a "Join channel" button, without any alert ("Open channel" must not show on the way). Click "Join channel" and wait up to 60 s for "you are subscriber". Without clearing the search, take a shot: the chat list now lists ci_channel (the chat open in the right pane), so the results must no longer list #ci_channel (#ci_group stays). Then press Escape until the chat list shows (the channel may stay open in the right pane).
|
||||
2. Type `ci_channel` and press Enter, and wait for the search to finish: the chat list shows your chat ci_channel, and no result #ci_channel; the list shows "All results on this page are already in your chats" (OCR may split this long line), followed by the load row only if there are more pages.
|
||||
2. Type `ci_channel` and press Enter, and wait about 12 s for the search to finish (nothing on the screen marks its end): the chat list shows your chat ci_channel, and no result #ci_channel and no note about the page; only the load row shows if there are more pages.
|
||||
3. Click "seeded notes" in the chat list, so that it, not ci_channel, is the chat open in the right pane. Type `seeded` and click "Search in Directory". A name narrows the chat list to the chats with that name and the chat open in the right pane, so the list doesn't show ci_channel by itself. Among the results (use the load row until #ci_group shows) ci_channel is a chat row like the ones in the chat list: its name without "#", its last message and time, and no "Open"; #ci_group keeps "Open". There is no "Names" header. Click the ci_channel row: no alert (no "You are a subscriber"), and the channel opens in the right pane.
|
||||
4. Type `zqxvjk` and press Enter: once the search finishes, no results. On desktop the chat open in the right pane stays listed, so "No chats found" may not show.
|
||||
5. Type `cinone`: a row "Connect to cinone.testing" shows. Press Enter: no alert about the name, no "Names" header, and "Connect to cinone.testing" stays; the search finds no directory entries.
|
||||
6. Open New chat with the pencil: at the right end of the bottom toolbar (about 363,730) when the toolbar is at the bottom; with the toolbar at the top, a round blue button at the bottom right of the chat list pane (about 341,710). Type `ci seed` in its search field and click "Search in Directory". In its results, one group without a header after the contacts (use the load row until #ci_group shows), ci_channel is a chat row like a contact's (its name without "#", no "Open"), and #ci_group keeps "Open". Close the sheet: Escape clears its search, then its back arrow (top left of the sheet) closes it.
|
||||
6. Open New chat with the pencil: at the right end of the bottom toolbar (about 363,730) when the toolbar is at the bottom; with the toolbar at the top, a round blue button at the bottom right of the chat list pane (about 341,710). Type `ci seed` in its search field and click "Search in Directory". In its results, one group without a header, with the contacts that match first (use the load row until #ci_group shows), ci_channel is a chat row like a contact's (its name without "#", no "Open"), and #ci_group keeps "Open". Close the sheet: Escape clears its search, then its back arrow (top left of the sheet) closes it.
|
||||
|
||||
You have at most 120 turns, and the whole test fits in about 75 if you chain steps whose outcome you can predict with `ui do` and look at the screen after each chain. For example, in the first layout:
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# which searches the directory too and leaves "Connect to …" for the typed name; with the toolbar at the bottom, also
|
||||
# with Enter in the New chat sheet, and a right click on a result opens its menu with Open. Then it joins ci_channel
|
||||
# through its result's Open, which opens the prepared channel without an alert, and checks, in both layouts, that a page
|
||||
# of chats already listed says so and that ci_channel, when the list doesn't show it, is its chat's row among the
|
||||
# of chats already listed adds nothing and that ci_channel, when the list doesn't show it, is its chat's row among the
|
||||
# results, opening it without an alert; and, with the toolbar at the bottom, that it is a chat row in New chat too.
|
||||
# These three need NAMES_SERVER, the test SMP server's address.
|
||||
# Each step saves a numbered screenshot and the text read from it to the output dir, prints the text to the log,
|
||||
@@ -419,7 +419,7 @@ full_search() {
|
||||
clear_search_and_check_cards "$layout full search"
|
||||
}
|
||||
|
||||
# The same Search key from the New chat sheet: one results card after the contacts, with Open on the results.
|
||||
# The same Search key from the New chat sheet: one group of results, the contacts that match first, with Open on the results.
|
||||
new_chat_sheet_search() {
|
||||
# the pencil at the right of the bottom toolbar opens New chat; the chat list behind it has the same search field
|
||||
"$ui" click 363 730
|
||||
@@ -561,7 +561,7 @@ show_known_results() {
|
||||
}
|
||||
|
||||
# A directory result that is a chat the user has. Typed `ci_channel`, it is listed as the chat open in the right pane,
|
||||
# so the page added no row and the results say so. With "seeded notes" open and `ci seed` typed, the list doesn't
|
||||
# so the page adds no row and no note. With "seeded notes" open and `ci seed` typed, the list doesn't
|
||||
# show it, so it is its chat row among the results, and clicking it opens it.
|
||||
known_channel_searches() {
|
||||
local layout=$1
|
||||
@@ -569,10 +569,15 @@ known_channel_searches() {
|
||||
"$ui" type ci_channel
|
||||
"$ui" wait "Search in Directory" 15
|
||||
"$ui" click-text "Search in Directory"
|
||||
# the note is a long line, which OCR can split after its first words
|
||||
wait_in_list "All results on this page" || true
|
||||
# nothing marks the end of a search that adds no row: wait out the request, which times out after 10 s
|
||||
sleep 12
|
||||
if on_screen "Search failed, tap to retry"; then
|
||||
"$ui" click-text "Search failed, tap to retry"
|
||||
sleep 12
|
||||
fi
|
||||
"$ui" shot "$layout-known-listed"
|
||||
check "$layout: a page of chats already listed says so" on_screen "All results on this page"
|
||||
check "$layout: the search for the listed chat didn't fail" not_on_screen "Search failed, tap to retry"
|
||||
check "$layout: a page of chats already listed adds no note" not_on_screen "All results on this page"
|
||||
check "$layout: no #ci_channel result next to the listed chat" no_ci_channel_directory_row
|
||||
check "$layout: no \"Open\" next to the listed chat" not_on_screen_exact "Open"
|
||||
clear_search_field "$layout"
|
||||
@@ -893,7 +898,7 @@ if grep -q '^FAIL' "$checks"; then
|
||||
fail "the smoke test failed checks: $(grep -c '^FAIL' "$checks") of $(grep -cE '^(PASS|FAIL)' "$checks")"
|
||||
fi
|
||||
if [ "$cases" = search ]; then
|
||||
echo "smoke test passed: onboarding reached the chat list with the toolbar at the bottom and at the top, the first search enabled Directory search, the searches showed one list of results with Open and the load row, Open opened the prepared ci_channel without an alert, and the joined ci_channel is a chat row among the results (chat list in both layouts, New chat), with the note for a page of chats already listed"
|
||||
echo "smoke test passed: onboarding reached the chat list with the toolbar at the bottom and at the top, the first search enabled Directory search, the searches showed one list of results with Open and the load row, Open opened the prepared ci_channel without an alert, and the joined ci_channel is a chat row among the results (chat list in both layouts, New chat), and a page of chats already listed adds nothing"
|
||||
exit 0
|
||||
fi
|
||||
echo "smoke test passed: onboarding reached the chat list, which shows \"$local_chat\" with the toolbar at the bottom and at the top"
|
||||
@@ -47,7 +47,7 @@ Haiku 5.5 drives the app well: the smoke plan takes a few dozen turns and cents;
|
||||
- a local SMP server with a `[NAMES]` section and `names-resolver.py`, the names `cinews.testing`, `ciboth.testing`, `cialice.testing` and `cibobby.testing` claimed by their owners, and the contacts cialice and Robert, online and accepting connections; its address goes to `<work dir>/names-server`;
|
||||
- checks before the app starts: a search sent to the directory as a message must list `ci_group` and `ci_channel`, `/_connect plan` must resolve each name from a fresh peer, and a search request as the app sends it (`/_service_request`) must find `ci_group` and `ci_channel`; then the searches "ci seed" and "ci avatar" are followed page by page, recording each page's entries and size against the response limit in `seed.md`.
|
||||
|
||||
With the backend, the workflow points the app at the test directory before building it (`DIRECTORY_SERVICE_LINK` in `apps/ios/Shared/Model/DirectorySearch.swift`, the only change it makes to app sources), and the smoke test goes on to search it: the first search's "Enable Directory search?" alert, where Cancel shows no results and keeps "Search in Directory", and Enable searches, with no alert on any later search; `#ci_group` and `#ci_channel` with Open and their avatars, with no "Directory" header and no "Search in Directory" next to them; the Search key with `cinews` typed, which shows directory results and keeps "Connect to cinews.testing", with no "Names"; the same results in the top layout; Open on `#ci_cards`, which reaches the prepared channel's "Tap Join channel" with no "Open channel" alert on the way and its subscriber count in the toolbar and the banner, then joins it; once joined, the note "All results on this page are already in your chats" when that channel, listed as a chat, is the page's only result; the chat list's cards shown while typing and hidden under the results, in both layouts; `ci_cards` found by `ci cards` (which the local filter doesn't match) shown as its chat row, with no `#ci_cards` or "Open", and opening the channel, on the chat list in both layouts and in New chat, where `ci seed` also shows `#ci_group` with Open; the load row for `ci avatar`, which reads "Load more · N left", is disabled while its page loads with the directory stopped, turns into "Search failed, tap to retry", and loads more entries once the directory is back; and last, as a check that warns rather than fails, a long press on `#ci_group` that shows a menu with Open (screenshot `long-press-menu`).
|
||||
With the backend, the workflow points the app at the test directory before building it (`DIRECTORY_SERVICE_LINK` in `apps/ios/Shared/Model/DirectorySearch.swift`, the only change it makes to app sources), and the smoke test goes on to search it: the first search's "Enable Directory search?" alert, where Cancel shows no results and keeps "Search in Directory", and Enable searches, with no alert on any later search; `#ci_group` and `#ci_channel` with Open and their avatars, with no "Directory" header and no "Search in Directory" next to them; the Search key with `cinews` typed, which shows directory results and keeps "Connect to cinews.testing", with no "Names"; the same results in the top layout; Open on `#ci_cards`, which reaches the prepared channel's "Tap Join channel" with no "Open channel" alert on the way and its subscriber count in the toolbar and the banner, then joins it; once joined, no row and no note when that channel, listed as a chat, is the page's only result (the step waits out the request, as nothing marks its end); the chat list's cards shown while typing and hidden under the results, in both layouts; `ci_cards` found by `ci cards` (which the local filter doesn't match) shown as its chat row, with no `#ci_cards` or "Open", and opening the channel, on the chat list in both layouts and in New chat, where `ci seed` also shows `#ci_group` with Open; the load row for `ci avatar`, which reads "Load more · N left", is disabled while its page loads with the directory stopped, turns into "Search failed, tap to retry", and loads more entries once the directory is back; and last, as a check that warns rather than fails, a long press on `#ci_group` that shows a menu with Open (screenshot `long-press-menu`).
|
||||
|
||||
It writes what it seeded to `<work dir>/seed.md` (the Claude sessions get it) and logs to `<work dir>/*.log`; `resume` (the same backend again from a stopped work dir, for the Claude job), `stop`, `directory-stop`, `directory-start` and `listings` are its other commands. The app reaches it through the simulator, which shares the runner's network; pointing the app at the names server is a few steps in Settings, described in `claude-prompt.md`.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ You are testing the SimpleX Chat iOS app in an iPhone 17 simulator (iOS 26.5, sc
|
||||
- **Positions.** "Above" means a smaller y. Judge order and position from the tree's coordinates, and look at a screenshot when you judge layout (truncation, overlap, images).
|
||||
- **The search field** has no label; tap it with `ui tap-value "Search or paste SimpleX link"` when empty, or by its text. To clear it, tap the field so it is focused, then "Cancel" next to it ("Cancel" exists only while the field is focused; it also hides the keyboard); tapping the "Close" image inside the field did not clear it in an earlier run. Type text as one quoted argument (`ui type "ci seed"`). The keyboard capitalizes the first letter and autocorrects words (an earlier run saw "ci" become "Ci" and a typed name become another word when a button was tapped), so check the field's value in the tree after typing, and before typing check that the field shows its placeholder. The keyboard's Search key is `ui key return`; the keyboard's keys are below the screen and not listed in the tree, and the screenshots do not show the keyboard.
|
||||
- **Pasting** (C4, W3): `ui clipboard "<link>"` with the link given under "This session", tap the empty field once to focus it and once more to open its menu, then tap its "Paste" item (two elements carry that label: use `ui tap-xy` on the one `ui find Paste` shows in the menu).
|
||||
- **Directory search.** "Search in Directory" (a row) and the keyboard's Search key search the directory, and only the directory: no SimpleX name is resolved by a search, and "Connect to …" stays shown next to the results. While the switch Settings → Privacy → "Directory search" is off (the default), every search first asks "Enable Directory search?" with "Cancel" and "Enable"; Enable turns the switch on and searches, and later searches don't ask. "Search in Directory" is hidden while results for the current text load or show. Results come as one list without headers: your chats first, then per result an avatar image, `"#name"`, the description, "N members" or "N subscriber(s)", and "Open", as separate texts. An entry you already have that the screen doesn't already list is shown instead as that chat's row, with no `#` and no "Open": on the chat list the same row as your other chats (name, last message, time), in New chat a row like a contact's. When every result of the last page loaded is a chat already listed, the list shows "All results on this page are already in your chats". The last row is the load row, "Load more · N left" (or "Load more" when the directory sends no count); a failed search or page shows "Search failed, tap to retry". These two are buttons with an icon, so their label in the tree may start with the icon's name: find them with `ui find` and tap with `ui tap-xy` when `ui tap` with the text alone finds nothing. A search takes 1–2 s here (it sets up an encrypted connection) and times out after 10 s. A channel's row shows the subscriber count the directory publishes for it (`publicMemberCount`), not the listings' members column, which counts every member record (owner, relay, directory), so the two differ by design.
|
||||
- **Directory search.** "Search in Directory" (a row) and the keyboard's Search key search the directory, and only the directory: no SimpleX name is resolved by a search, and "Connect to …" stays shown next to the results. While the switch Settings → Privacy → "Directory search" is off (the default), every search first asks "Enable Directory search?" with "Cancel" and "Enable"; Enable turns the switch on and searches, and later searches don't ask. "Search in Directory" is hidden while results for the current text load or show. Results come as one list without headers: your chats first, then per result an avatar image, `"#name"`, the description, "N members" or "N subscriber(s)", and "Open", as separate texts. An entry you already have that the screen doesn't already list is shown instead as that chat's row, with no `#` and no "Open": on the chat list the same row as your other chats (name, last message, time), in New chat a row like a contact's. When every result of the last page loaded is a chat already listed, the search adds no row and no note. The last row is the load row, "Load more · N left" (or "Load more" when the directory sends no count); a failed search or page shows "Search failed, tap to retry". These two are buttons with an icon, so their label in the tree may start with the icon's name: find them with `ui find` and tap with `ui tap-xy` when `ui tap` with the text alone finds nothing. A search takes 1–2 s here (it sets up an encrypted connection) and times out after 10 s. A channel's row shows the subscriber count the directory publishes for it (`publicMemberCount`), not the listings' members column, which counts every member record (owner, relay, directory), so the two differ by design.
|
||||
- **Order with the one-hand UI.** Results read from the bottom like the chats: your chats nearest the search field, then the results, each "Load more" adding its page above the earlier ones, and the load row at the top of the results, farthest from the field. With the top bar the order runs downwards from the field, the load row last.
|
||||
- **Long press** (`ui long-press <x> <y>` at a result's centre): on a result row it opens a menu with one item, "Open", over a lifted copy of the row without its "Open". Close the menu by tapping outside it (for example `ui tap-xy 200 100`), not by choosing Open, unless the case says so.
|
||||
- **Disabled elements** end with "disabled" in the tree.
|
||||
|
||||
@@ -62,7 +62,7 @@ Run these on an iOS simulator or device on the Mac. Each case says what to do an
|
||||
| U1 | Search for the name of a channel you joined (it is also listed) | It appears once, as your local chat; no result row for it |
|
||||
| U2 | Search for a word only in that channel's description, so the local list does not show it | It appears as your chat's row (as in the chat list: name without `#`, last message, time), before the result rows, with no "Open"; tapping it opens the channel, with no alert |
|
||||
| U3 | A listed regular group you joined with `/c` and its listed link; one you were invited to or joined through another link | The `/c`-joined group shows as your chat, with no "Open". The invited or other-link group shows as a result with "Open" beside its own chat row: the documented limit, not a regression |
|
||||
| U4 | Search for the name of a joined channel that is the page's only result, so the list shows it as your chat | "All results on this page are already in your chats" (grey), and the load row when there are more pages; nothing loads more pages by itself |
|
||||
| U4 | Search for the name of a joined channel that is the page's only result, so the list shows it as your chat | Only the chat's own row, no note about the page, and the load row when there are more pages; nothing loads more pages by itself |
|
||||
|
||||
## New chat (AC9)
|
||||
|
||||
@@ -72,7 +72,7 @@ Run these on an iOS simulator or device on the Mac. Each case says what to do an
|
||||
| W2 | Type a 5+ letter word | "Connect to … " and "Search in Directory" below the field |
|
||||
| W3 | Paste a link | No "Search in Directory"; the link connects as before |
|
||||
| W4 | Press the keyboard **Search** key | The directory results, after the alert while the switch is off; "Connect to …" stays; "Search in Directory" hides while the results show |
|
||||
| W5 | Results arrive | One card without a header after "Your Contacts" (which shows only while a contact matches): your chats, then the results with 30-pt avatars and "Open", the load row last |
|
||||
| W5 | Results arrive | One card without a header: the contacts that match, your chats, then the results with 30-pt avatars and "Open", the load row last; no "Your Contacts" header while results show |
|
||||
| W6 | Search with no contact matching | "No filtered contacts" is hidden while searching and when there are results; shown when nothing is found anywhere |
|
||||
| W7 | Tap a result or its "Open" | The sheet closes and the chat opens prepared, with no alert |
|
||||
| W8 | Long press a result | A menu with "Open", as in D15 |
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# asks again; the results show Open and their avatars, with no header, in both layouts; Open prepares a channel and
|
||||
# opens it without an alert, with its subscriber count; once joined, the channel is its chat row among the results, on
|
||||
# the chat list in both layouts and in New chat; the chat list's cards show while typing and hide under the results;
|
||||
# a page whose only result is that channel says so; the load row says how many results are left, is disabled while
|
||||
# a page whose only result is that channel adds nothing; the load row says how many results are left, is disabled while
|
||||
# its page loads (a screenshot shows its colour) and offers a retry when that fails; and a long press on a result
|
||||
# shows a menu with Open (not fatal: the gesture is new to this harness; a screenshot shows it).
|
||||
# Usage: scripts/ci/ios-sim/smoke-test.sh <path to SimpleX.app> <output dir>
|
||||
@@ -481,11 +481,24 @@ expect_in_tree -F 'StaticText "ci_cards"'
|
||||
expect_no_join_row "the chat list after joining"
|
||||
echo "after joining through Open, ci_cards is its chat row among the results and no longer a result to open"
|
||||
clear_search
|
||||
# the page's only result is that channel, which the list shows, so the results say the page added none
|
||||
# the page's only result is that channel, which the list shows, so the search adds no row and no note; nothing marks
|
||||
# its end, so the step waits out the request, which times out after 10 s
|
||||
type_search "ci_cards"
|
||||
search_directory '"All results on this page are already in your chats"'
|
||||
tap_search_in_directory
|
||||
sleep 12
|
||||
retry=$(labelled_containing "Search failed, tap to retry")
|
||||
if [ -n "$retry" ]; then
|
||||
tap_element "$retry"
|
||||
sleep 12
|
||||
fi
|
||||
"$ui" shot page-in-chats
|
||||
echo "the results say all results on the page are already in your chats"
|
||||
expect_in_tree -F 'StaticText "ci_cards"'
|
||||
expect_no_join_row "the chat list listing ci_cards"
|
||||
if "$ui" tree | grep -qF -e "All results on this page" -e "Search failed, tap to retry"; then
|
||||
echo "error: the search whose only result is the listed ci_cards shows a note or failed"
|
||||
exit 1
|
||||
fi
|
||||
echo "the search whose only result is the listed ci_cards adds no row and no note"
|
||||
clear_search
|
||||
expect_cards_hidden_by_results reachable
|
||||
open_known_chat_from_results reachable
|
||||
@@ -541,4 +554,4 @@ else
|
||||
echo "WARN: a long press on #ci_group shows no menu with Open; see the long-press-menu screenshot"
|
||||
fi
|
||||
clear_search || true
|
||||
echo "smoke test passed: onboarding reaches the chat list in both layouts; the first directory search asks to enable Directory search, Cancel sends nothing and Enable searches, and no later search asks; the search for \"$search_text\" shows #ci_group and #ci_channel with Open and their avatars, with no header; the Search key searches the directory and keeps \"Connect to …\"; Open opens a prepared channel without an alert, with its subscriber count; with a chat, the list's cards show while typing and hide under the results; a page of chats already listed says so; the joined channel found by its description is its chat row on the chat list in both layouts and in New chat, and opens it; the load row says how many results are left, is disabled while its page loads and retries a failed page"
|
||||
echo "smoke test passed: onboarding reaches the chat list in both layouts; the first directory search asks to enable Directory search, Cancel sends nothing and Enable searches, and no later search asks; the search for \"$search_text\" shows #ci_group and #ci_channel with Open and their avatars, with no header; the Search key searches the directory and keeps \"Connect to …\"; Open opens a prepared channel without an alert, with its subscriber count; with a chat, the list's cards show while typing and hide under the results; a page of chats already listed adds nothing; the joined channel found by its description is its chat row on the chat list in both layouts and in New chat, and opens it; the load row says how many results are left, is disabled while its page loads and retries a failed page"
|
||||
Reference in new issue
Block a user