Skip to content

change(web): merge master into autocorrect for acceptance testing 🚂 - #16223

Open
jahorton wants to merge 6 commits into
epic/autocorrectfrom
change/web/merge-master-into-autocorrect-acceptance-prep
Open

change(web): merge master into autocorrect for acceptance testing 🚂#16223
jahorton wants to merge 6 commits into
epic/autocorrectfrom
change/web/merge-master-into-autocorrect-acceptance-prep

Conversation

@jahorton

@jahorton jahorton commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

This merges the latest master into epic/autocorrect in order to begin acceptance testing for predictive-text.

Build-bot: skip release:web release:android release:ios

User Testing

SUITE_AUTOCORRECTABLE: Perform tests in scenarios where autocorrective behaviors should be enabled.

GROUP_ANDROID_EUROLATIN: Perform all tests with the sil_euro_latin keyboard and an English-language lexical model active within this PR's artifact for Keyman for Android.
GROUP_ANDROID_AMHARIC: Perform all tests with the gff_amharic keyboard active along with its default associated lexical model within this PR's artifact for Keyman for Android.
GROUP_IOS_EUROLATIN: Perform all tests with the sil_euro_latin keyboard and an English-language lexical model active within this PR's artifact for Keyman for iPhone and iOS.
GROUP_IOS_AMHARIC: Perform all tests with the gff_amharic keyboard active along with its default associated lexical model within this PR's artifact for Keyman for iPhone and iOS.

TEST_CLEAR_CONTEXT: Verify that predictive text throws no errors when clearing the context / deleting all text.

TEST_PRED_CHAIN_APPLY: Apply numerous suggestions in sequence and verify that they apply properly.

TEST_SUGGESTIONS_ON_BKSP: Verify that reasonable suggestions are displayed for text after using BKSP to reach the end of a previous word.

  • Type part of a word.
  • Hit the spacebar once.
  • Tap backspace once.
  • Multiple suggestions should be displayed, all based on the remaining word.

TEST_UNSELECTED_KEEP: Verify that typing a complete, correctly-spelled word does not result in a selected suggestion matching the word.

  1. Clear any pre-existing context.
  2. Type the following, depending on active keyboard:
    • sil_euro_latin: Type search.
    • gff_amharic: Type ውስጥ. (Positionally, QWERTY xsk.)
  3. Verify that the left-most option displays the typed string and that it is not highlighted (and thus, not a candidate for automatic application).

TEST_SELECTED_NEAR_MATCH: Using Keyman for Android, verify that typing a complete, correctly-spelled word does not result in a selected suggestion matching the word.

  1. Clear any pre-existing context.
  2. Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Verify that the left-most option displays the typed string, in quotes, and that it is not highlighted.
  4. Verify that the second-to-left-most option displays a string starting with the typed string that is highlighted (and thus, a candidate for automatic application).

TEST_PERIOD_APPLY_OVERWRITE: Check if punctuation typed immediately after applying a suggestion erases the whitespace.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ጽሕ. (Positionally, QWERTY ;y.)
  • Tap the automatically-highlighted suggestion.
  • Then tap a punctuation mark.
    • sil_euro_latin: . will do nicely.
    • gff_amharic: the base-layer ! key will work nicely.
  • Verify that there is no whitespace between the applied suggestion and the punctuation mark.

TEST_SPACE_APPLY_OVERWRITE: Check if whitespace typed immediately after applying a suggestion erases the whitespace.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ጽሕ. (Positionally, QWERTY ;y.)
  • Tap the automatically-highlighted suggestion.
  • Then tap the key.
  • Verify that only a single whitespace exists between the applied suggestion and the new text insertion point.

TEST_PUNCT_APPLICATION: Check if punctuation typed with a highlighted suggestion applies it and appears afterward.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  • Then tap a punctuation mark.
    • sil_euro_latin: . will do nicely.
    • gff_amharic: the base-layer ! key will work nicely.
  • Verify that the suggestion applies as expected, with no whitespace between the suggested text and the punctuation mark.
  • Tap the punctuation mark again and verify that it outputs a new copy of it.

TEST_SPACE_APPLICATION: Check if punctuation typed with a highlighted suggestion applies it and appears afterward.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  • Then tap the key.
  • Verify that the suggestion applies as expected, with only a single whitespace between the suggestion text and the new text insertion point.
  • Tap and verify that it outputs a new .

TEST_PERIOD_OVERWRITE_REVERSION: Check if punctuation typed immediately after applying a suggestion erases the whitespace.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  • Tap the automatically-highlighted suggestion.
  • Then tap a punctuation mark.
    • sil_euro_latin: . will do nicely.
    • gff_amharic: the base-layer ! key will work nicely.
  • Verify that the suggestion-inserted space is removed - that no whitespace between the suggested text and the punctuation mark.
  • Backspace over the punctuation mark and verify that a proper reversion is displayed (either searchi or ጽሕ depending on the test's keyboard.)
  • Apply the reversion and verify that no errors result.
  • Clear the context and type 3 words, then a space, and then repeat this test until reaching this line.

TEST_PERIOD_APPLICATION_REVERSION: Check if punctuation typed immediately after applying a suggestion erases the whitespace.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  • Then tap a punctuation mark.
    • sil_euro_latin: . will do nicely.
    • gff_amharic: the base-layer ! key will work nicely.
  • Backspace over the punctuation mark and verify that a proper reversion is displayed that will undo the auto-applied suggestion.
  • Apply the reversion and verify that no errors result.
  • Clear the context and type 3 words, then a space, and then repeat this test until reaching this line.

TEST_PERIOD_APPLICATION_DELAYED_REVERSION: Check if punctuation typed immediately after applying a suggestion erases the whitespace.

  • Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  • Then tap a punctuation mark.
    • sil_euro_latin: . will do nicely.
    • gff_amharic: the base-layer ! key will work nicely.
  • Verify that no whitespace exists between the suggestion and the punctuation mark.
  • Tap the punctuation mark again and verify that it outputs a new copy.
  • Backspace over the newest copy of the punctuation mark and verify that a proper reversion is displayed.
  • Apply the reversion and verify that no errors result.
  • Clear the context and type 3 words, then a space, and then repeat this test until reaching this line.

TEST_DELAYED_ON_WORD: Check if deleting characters up to the end of an applied suggestion's main body displays a reversion.

  1. Tap one of the default suggestions.
  2. Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Apply the automatically-highlighted suggestion with the space key. Note the full context obtained here, as it will be relevant later.
  4. Tap an additional suggestion.
  5. Type two additional letters after the tapped suggestion.
  6. Delete text until the text insertion point is immediately after the end of the suggestion applied in step 3.
  7. Verify that an appropriate reversion is displayed.
  8. Apply it and verify that the full text reverts to the "full context" you noted at the end of step 3.
  9. Verify that the original suggestions are displayed, but no suggestion is automatically selected / highlighted.
  10. Type a random character on the keyboard and verify that no errors, notifications, or warnings are displayed.

TEST_DELAYED_ON_SPACE: Check if deleting characters up to the end of an applied suggestion's main body displays a reversion.

  1. Tap one of the default suggestions.
  2. Type the following, depending on active keyboard:
    • sil_euro_latin: Type searchi.
    • gff_amharic: Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Apply the automatically-highlighted suggestion with the space key. Note the full context obtained here, as it will be relevant later.
  4. Tap an additional suggestion.
  5. Type two additional letters after the tapped suggestion.
  6. Delete text until the text insertion point is immediately after the whitespace after the end of the suggestion applied in step 3.
  7. Verify that an appropriate reversion is displayed.
  8. Apply it and verify that the full text reverts to the "full context" you noted at the end of step 3.
  9. Verify that the original suggestions are displayed, but no suggestion is automatically selected / highlighted.
  10. Type a random character on the keyboard and verify that no errors, notifications, or warnings are displayed.

TEST_DOUBLE_DELAYED: Check if two suggestions can be reverted in rapid succession.

  • Clear any pre-existing context.
  • With the context empty, type two characters and apply a suggestion. (Suggestion "A")
  • Type another character an apply a suggestion. (Suggestion "B")
  • Type two characters and apply a suggestion. (Suggestion "C")
  • Tap backspace and verify that a reversion for Suggestion "C" is displayed.
  • Tap the reversion suggestion and verify that the text matches the text from before Suggestion "C" was applied.
  • Tap backspace up to the end of applied Suggestion "B" and verify that a reversion for Suggestion "B" is displayed.
  • Tap the reversion suggestion and verify that the text matches the text from before Suggestion "B" was applied.
  • Verify that the text applied from Suggestion "A" still exists in the context.

TEST_REAPPLIED_SUGGESTIONS: Verify that re-applying a suggestion in the following manner does not cause error messages or notifications.
2. Type the following, depending on active keyboard:
- sil_euro_latin: Type searchi.
- gff_amharic: Type ውስጥ. (Positionally, QWERTY xsk.)
2. Select any suggestion without surrounding quotes.
3. Tap the backspace key once, then apply the reversion.
4. Your originally chosen suggestion should be visible. Re-apply it.
5. No error should result, and the suggestion should apply properly.

TEST_ROBUSTNESS: Spend at least 5 minutes trying to "break" predictive text and/or cause it to work improperly. Report back on any issues discovered.


SUITE_AUTOCORRECT_MULTITAPS: Perform tests in scenarios with niche cases related to autocorrect.

GROUP_ANDROID_NICHE: Run the following tests on Keyman for Android.
GROUP_IOS_NICHE: Run the following tests on Keyman for iPhone and iPad.

TEST_MULTITAPS: Verify that the . key on english_punct_rota rotates through the desired punctuation marks.

  1. Erase all text.
  2. Tap the . key four times, rotating through ., ,, and ?, landing on !.
  3. Type the following text: Testing is important . (Include the space mark.)
  4. Repeat step 2 above and verify that only the punctuation mark is altered.

TEST_MULTITAP_OVERWRITE: Using a keyboard with a multitap punctuation rota key, check if punctuation typed immediately after applying a suggestion erases the whitespace, even on repeated taps.

  • Install the keyboard package found at https://jahorton.github.io/english_punct_rota.kmp.

    It may be installed via the following QR link as well:

    frame
  • Type testi

  • Manually apply the testing suggestion.

  • Then tap the . key four times, rotating through ., ,, and ?, landing on !.

  • Verify that the results are testing., testing,, testing?, and the final result is testing!, with no appended whitespace.

TEST_MULTITAP_APPLICATION: Using a keyboard with a multitap punctuation rota key, check if punctuation typed with a highlighted suggestion applies it and appears afterward, even on repeated taps.

  • Install the keyboard package found at https://jahorton.github.io/english_punct_rota.kmp.

    It may be installed via the following QR link as well:

    frame
  • Type testi and verify that it is selected / highlighted. (If it isn't, delete its text and retype - tap accuracy may help.)

  • Then tap the . key four times, rotating through ., ,, and ?, landing on !.

  • Verify that the results are testing., testing,, testing?, and the final result is testing!, with no appended whitespace.


SUITE_WITHOUT_AUTOCORRECT: Perform tests in scenarios where autocorrective behaviors should not be enabled.

GROUP_ANDROID_KHMER: Perform all tests with the khmer_angkor keyboard and an English-language lexical model active within this PR's artifact for Keyman for Android.
GROUP_IOS_KHMER: Perform all tests with the khmer_angkor keyboard and an English-language lexical model active within this PR's artifact for Keyman for iPhone and iOS.

TEST_UNSELECTED_KHMER_KEEP: Verify that typing a complete, correctly-spelled word does not result in a selected suggestion matching the word.

  1. Clear any pre-existing context.
  2. Type a standard Khmer word without typos.
  3. Verify that the left-most option displays the typed string and that it is not highlighted (and thus, not a candidate for automatic application).

TEST_SELECTED_KHMER_NEAR_MATCH: Using Keyman for Android, verify that typing a complete, correctly-spelled word does not result in a selected suggestion matching the word.

  1. Clear any pre-existing context.
  2. Type most of a Khmer word, but replace one letter with a different one nearby on the keyboard.
  3. Verify that the left-most option displays the typed string and that it is not highlighted.
  4. Verify that the second-to-left-most option displays a string starting with the typed string.

TEST_SPACE_KHMER_APPLY_OVERWRITE: Check if punctuation typed immediately after applying a suggestion erases the whitespace.

  • Type most of a Khmer word.
  • Tap a suggestion.
  • Then tap the key.
  • Verify that only a single whitespace exists between the applied suggestion and the new text insertion point.

TEST_KHMER_CANDIDATE: Verify that autocorrect does not currently function for Khmer due to limitations.

  • Type ចូឡាម.
  • Verify that ចូឡាមណី appears as the lone predictive-text suggestion. (Requires sil.km.cnd model be the active Khmer model; it's the current default, I believe.)
  • Verify that it is not autoselected.

🚧 Brainstorming possible extra angles to test... 🚧

Additional (?) types of tests to run:

  • merge, split cases? (predictable: can' => can't - even if can is autoselected, can't is valid.
    • especially: can't do -> backspace to can', very can suggestion can't.
  • stuff after a newline, with backspaces to reverse a bit (acts really weird in the iOS Simulator)

Also cross-reference and double-check handled cases in these have appropriate testing:

@github-project-automation github-project-automation Bot moved this to Todo in Keyman Jul 10, 2026
@keymanapp-test-bot keymanapp-test-bot Bot added has-user-test user-test-missing User tests have not yet been defined for the PR labels Jul 10, 2026
@keymanapp-test-bot

keymanapp-test-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown

User Test Results

Test specification and instructions

🟥 SUITE_AUTOCORRECTABLE: Perform tests in scenarios where autocorrective behaviors should be enabled.

  • ✅ GROUP_ANDROID_EUROLATIN: Perform all tests with the sil_euro_latin keyboard and an English-language lexical model active within this PR's artifact for Keyman for Android.

    17 tests PASSED
  • ✅ GROUP_ANDROID_AMHARIC: Perform all tests with the gff_amharic keyboard active along with its default associated lexical model within this PR's artifact for Keyman for Android.

    17 tests PASSED
  • 🟥 GROUP_IOS_EUROLATIN: Perform all tests with the sil_euro_latin keyboard and an English-language lexical model active within this PR's artifact for Keyman for iPhone and iOS.

  • 🟥 GROUP_IOS_AMHARIC: Perform all tests with the gff_amharic keyboard active along with its default associated lexical model within this PR's artifact for Keyman for iPhone and iOS.

✅ SUITE_AUTOCORRECT_MULTITAPS: Perform tests in scenarios with niche cases related to autocorrect.

6 tests in 2 groups PASSED
  • ✅ GROUP_ANDROID_NICHE: Run the following tests on Keyman for Android.

    3 tests PASSED
  • ✅ GROUP_IOS_NICHE: Run the following tests on Keyman for iPhone and iPad.

    3 tests PASSED

✅ SUITE_WITHOUT_AUTOCORRECT: Perform tests in scenarios where autocorrective behaviors should not be enabled.

8 tests in 2 groups PASSED
  • ✅ GROUP_ANDROID_KHMER: Perform all tests with the khmer_angkor keyboard and an English-language lexical model active within this PR's artifact for Keyman for Android.

    4 tests PASSED
  • ✅ GROUP_IOS_KHMER: Perform all tests with the khmer_angkor keyboard and an English-language lexical model active within this PR's artifact for Keyman for iPhone and iOS.

    4 tests PASSED
Retesting Template
Test-bot: retest SUITE_AUTOCORRECTABLE GROUP_IOS_EUROLATIN TEST_ROBUSTNESS GROUP_IOS_AMHARIC TEST_ROBUSTNESS

@keymanapp-test-bot keymanapp-test-bot Bot changed the title change(web): merge master into autocorrect for acceptance testing change(web): merge master into autocorrect for acceptance testing 🚂 Jul 10, 2026
@keymanapp-test-bot keymanapp-test-bot Bot added this to the A19S33 milestone Jul 10, 2026
@keymanapp-test-bot keymanapp-test-bot Bot added user-test-required User tests have not been completed and removed user-test-missing User tests have not yet been defined for the PR labels Jul 13, 2026
@Meng-Heng Meng-Heng self-assigned this Jul 16, 2026
@Meng-Heng

Meng-Heng commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Test Specs

  1. Android Studio Pixel 9 API 35
  2. Keyman v19.0.254-alpha-test-16223
  3. Prediction settings -> Enable "Prediction with auto-corrections"

SUITE_AUTOCORRECTABLE: Perform tests in scenarios where autocorrective behaviors should be enabled.

GROUP_ANDROID_EUROLATIN: Perform all tests with the sil_euro_latin keyboard and an English-language lexical model active within this PR's artifact for Keyman for Android.

  • TEST_CLEAR_CONTEXT (PASSED):
  1. Type some random words + predictive text
  2. Press "Clear text"
  3. Result:
    • Predictive text throws no errors.
  • TEST_PRED_CHAIN_APPLY (PASSED):
  1. Result:
    • Applying numerous suggestions
    • The words applied properly.
  • TEST_SUGGESTIONS_ON_BKSP (FAILED):
  1. Type selec
  2. Press Spacebar once
  3. Tap Backspace once
  4. Result:
    • The prediction is blank.
  • TEST_UNSELECTED_KEEP (PASSED):
  1. Clear all text
  2. Type search
  3. Result:
    • The left-most option display search
    • It is not highlighted
  • TEST_SELECTED_NEAR_MATCH (PASSED):
  1. Clear all text
  2. Type searchi
  3. Result:
    • The left-most option display "searchi"
    • The second-to-left-most display searching and it is highlighted.
  • TEST_PERIOD_APPLY_OVERWRITE (PASSED):
  1. Clear all text
  2. Type searchi
  3. Click on the highlighted word
  4. Press .
  5. Result:
    • Text searching.
    • No whitespace between the applied suggestion and the punctuation mark.
  • TEST_SPACE_APPLY_OVERWRITE (PASSED):
  1. Clear all text
  2. Type searchi
  3. Tap the highlighted suggestion
  4. Click Space one
  5. Result:
    • Text: searching
    • Only a single whitespace exists between the applied suggestion and the new text insertion point.
  • TEST_PUNCT_APPLICATION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Click . for automatic application
  4. Result:
    • Text searching.
  5. Click .
  6. Result:
    • Text searching..
    • Suggestion applied as expected, with no whitespace between the suggested text and the punctuation mark.
  • TEST_SPACE_APPLICATION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Tap Space once
  4. Result:
    • Text searching
  5. Tap Space again
  6. Result:
    • Text searching.
  • TEST_PERIOD_OVERWRITE_REVERSION (FAILED):
  1. Clear all text
  2. Type searchi
  3. Tap the automatic-highlighted suggestion
  4. Tap .
  5. Result:
    • Text searching.
  6. Tap Backspace one
  7. Result
    • Text searching
  8. Result
    • Prediction box stays blank.
  • TEST_PERIOD_APPLICATION_REVERSION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Press .
  4. Backspace over the punctuation
  5. Result:
    • Text searching
  6. Result:
    • A proper reversion is displayed that will undo the auto-applied suggestion
    • The reversion applied successfully and has no errors result
    • Clear the context and type 3 words, then a space, and then repeat this test until reaching this line successfully.
  • TEST_PERIOD_APPLICATION_DELAYED_REVERSION (FAILED):
  1. Clear all text
  2. Type searchi
  3. Tap .
  4. Result:
    • Text searching.
    • No whitespace exists between the suggestion and the punctuation mark
  5. Tap .
  6. Result:
    • Text searching..
  7. Backspace over the newest ., the text becomes searching.
  8. Result:
    • The predictive bar is blank.
  • TEST_DELAYED_ON_WORD (FAILED):
  1. Clear all text
  2. Click And from the prediction
  3. Type searchi
  4. Tap Space one
  5. Result:
    • Text is And searching
  6. Here is where the prediction bar becomes blank.
  • TEST_DELAYED_ON_SPACE (FAILED):
  1. This has the same failing test as the test above.
  • TEST_DOUBLE_DELAYED (PASSED):
  1. Clear all text
  2. Type S -> Tap See from the suggestion
  3. Text is See
  4. Type s -> Tap so from the suggestion
  5. Text is See so
  6. Type d -> Tap do from the suggestion
  7. Text is See so do
  8. Tap backspace for:
    • text See so do
    • text See so
  9. Verified: The reversions and applications work as expected
  10. Result
    • Text is See s by the end of this test.
  • TEST_REAPPLIED_SUGGESTIONS (PASSED):
  1. Clear all text
  2. Type searchi
  3. Choose searched from the prediction
  4. Tap Backspace once
  5. The original "searchi" is visible
  6. Apply the original typed text
  7. Verified: Applying the text work as expected.
  8. The searched suggestion appears
  9. Apply searched again does not produce any errors.
  10. Result
    • Text is searched by the end of this test.
  • TEST_ROBUSTNESS (FAILED):
  1. I've noticed the predictive box shows blank when backspace:
Screen.Recording.2026-07-16.at.3.49.32.in.the.afternoon.mov

@jahorton

Copy link
Copy Markdown
Contributor Author

I've created #16273 to address the current batch of failed user tests.

@Meng-Heng

Copy link
Copy Markdown
Contributor

Noted, I'll try getting them done today. I have been doing section-testing almost half way done now.

@Meng-Heng

Copy link
Copy Markdown
Contributor

I got an error when installing Keyman Test for Android onto Android Emulator:

Error code: 'INSTALL_PARSE_FAILED_NO_CERTIFICATES', message='INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1416770787.tmp/keyman-19.0.259-alpha-test-16223.apk: Attempt to get length of null array'

@Meng-Heng

Meng-Heng commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

SUITE_AUTOCORRECT_MULTITAPS:

  • iPad Air 11-inch M3 on XCode
  • Keyman v19.0.259-alpha-test-16223
  • Pixel 9 API 35

GROUP_ANDROID_NICHE:

  • TEST_MULTITAPS (PASSED):
  1. Erase all text.
  2. Tap the . key four times, rotating through ., ,, and ?, landing on !.
  3. Type Testing is important (Include the space mark.)
  4. Tap the . key four times, rotating through., ,, and ?, landing on !.
  5. VERIFIED: Only the punctuation mark rotates through its key options.
  • TEST_MULTITAP_OVERWRITE (PASSED):
  1. Type testi
  2. Manually apply the testing highlighted suggestion.
  3. Then tap the . key four times, rotating through ., ,, and ?, landing on !.
  4. VERIFIED: The results are testing., testing,, testing?, and testing!, with no appended whitespace.
  • TEST_MULTITAP_APPLICATION (PASSED):
  1. Type testi
  2. The testing is highlighted
  3. Then tap the . key four times, rotating through ., ,, and ?, landing on !.
  4. VERIFIED: The results are testing., testing,, testing?, and testing!, with no appended whitespace.

GROUP_IOS_NICHE:

  • TEST_MULTITAPS (PASSED):
  1. Erase all text.
  2. Tap the . key four times, rotating through ., ,, and ?, landing on !.
  3. Type Testing is important (Include the space mark.)
  4. Tap the . key four times, rotating through., ,, and ?, landing on !.
  5. VERIFIED: Only the punctuation mark rotates through its key options.
  • TEST_MULTITAP_OVERWRITE (PASSED):
  1. Type testi
  2. Manually apply the testing highlighted suggestion.
  3. Then tap the . key four times, rotating through ., ,, and ?, landing on !.
  4. VERIFIED: The results are testing., testing,, testing?, and testing!, with no appended whitespace.
  • TEST_MULTITAP_APPLICATION (PASSED):
  1. Type testi
  2. The testing is highlighted
  3. Then tap the . key four times, rotating through ., ,, and ?, landing on !.
  4. VERIFIED: The results are testing., testing,, testing?, and testing!, with no appended whitespace.

SUITE_WITHOUT_AUTOCORRECT:

  • iPad Air 11-inch M3 on XCode
  • Keyman v19.0.259-alpha-test-16223
  • Pixel 9 API 35

GROUP_ANDROID_KHMER:

  • TEST_UNSELECTED_KHMER_KEEP (PASSED):
  1. Clear any pre-existing context.
  2. Type sYr
  3. VERIFIED: The left-most option displays the typed string and that it is not highlighted.
  • TEST_SELECTED_KHMER_NEAR_MATCH (PASSED):
  1. Clear any pre-existing context.
  2. Type srs[ which is the incomplete form of srs[r
  3. Now without typing r, instead type t
  4. Text result is srs[t (សរសើត)
  5. VERIFIED: The left-most option displays the closest correct form to srs[r and it is not highlighted.
  6. VERIFIED: The second-to-left-most option displays a string starting with the typed string.
  • TEST_SPACE_KHMER_APPLY_OVERWRITE (PASSED):
  1. Clear any pre-existing context.
  2. Type srs[
  3. Tap a suggestion
  4. Then tap the key.
  5. VERIFIED: Only a single whitespace exists between the applied suggestion and the new text insertion point.
  • TEST_KHMER_CANDIDATE (PASSED):
  1. Type ចូឡាម
  2. VERIFIED: ចូឡាមណី appears as one lone predictive-text suggestion
  3. It is using the sil.km.cnd model
  4. VERIFIED: It is not autoselected.

GROUP_IOS_KHMER:

  • TEST_UNSELECTED_KHMER_KEEP (PASSED):
  1. Clear any pre-existing context.
  2. Type srser
  3. VERIFIED: The left-most option displays the typed string and that it is not highlighted (and thus, not a candidate for automatic application).
  • TEST_SELECTED_KHMER_NEAR_MATCH (FAILED):
  1. Clear any pre-existing context.
  2. Type sY which is the incomplete form of sYr
  3. Now without typing r, instead type d
  4. Text result is sYd (សួដ)
  5. FAILED: The left-most option displays the closest correct form to sY and it is not highlighted.
  6. VERIFIED: The second-to-left-most option displays a string starting with the typed string.
    Screenshot 2026-07-22 at 4 01 37 in the afternoon
  • TEST_SPACE_KHMER_APPLY_OVERWRITE (PASSED):
  1. Clear any pre-existing context.
  2. Type mu
  3. Tap a suggestion
  4. Then tap the key.
  5. VERIFIED: Only a single whitespace exists between the applied suggestion and the new text insertion point.
  • TEST_KHMER_CANDIDATE (PASSED):
  1. Type ចូឡាម
  2. VERIFIED: ចូឡាមណី appears as one of the two predictive-text suggestions.
  3. It is using the sil.km.cnd model
  4. VERIFIED: It is not auto-selected.

@Meng-Heng

Copy link
Copy Markdown
Contributor

I'm not sure if TEST_SELECTED_KHMER_NEAR_MATCH should fail or not because it is recommending correctly from my user experience.

@jahorton

Copy link
Copy Markdown
Contributor Author

Test-bot: retest SUITE_AUTOCORRECTABLE GROUP_ANDROID_EUROLATIN TEST_SUGGESTIONS_ON_BKSP TEST_PERIOD_OVERWRITE_REVERSION TEST_PERIOD_APPLICATION_DELAYED_REVERSION TEST_DELAYED_ON_WORD TEST_DELAYED_ON_SPACE TEST_ROBUSTNESS

With #16273's changes now merged into this PR, the previous test results for these should be addressed.

@Meng-Heng

Copy link
Copy Markdown
Contributor

Test Results

SUITE_AUTOCORRECTABLE:

GROUP_ANDROID_EUROLATIN:

  • TEST_SUGGESTIONS_ON_BKSP (PASSED):
  1. Type selec
  2. Press Spacebar once
  3. VERIFIED: Prediction text show the default suggestions
  4. Tap Backspace once
  5. VERIFIED: Multiple suggestions are displayed, all based on the remaining word.
  • TEST_PERIOD_OVERWRITE_REVERSION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Tap the automatic-highlighted suggestion
  4. Tap .
  5. Text result searching.
  6. Tap Backspace once over the .
  7. VERIFIED: The prediction text displays only ”searchi:
  8. Apply the reversion
  9. VERIFIED: The suggestion application work as expected with no error
  10. Clear the context and type I am a
  11. Repeat this test
  12. Final text result: I am a searchia
  • TEST_PERIOD_APPLICATION_DELAYED_REVERSION (PASSED):
    1. Clear all text
    1. Type searchi
    1. Tap .
    1. Text result searching.
    1. VERIFIED: No whitespace exists between the suggestion and the punctuation mark
    1. Tap .
    1. Text result: searching..
    1. Backspace over the newest ., the text becomes searching.
    1. VERIFIED: The suggestion displays ”searchi”
    1. Apply the reversion
    1. VERIFIED: The suggestion application work as expected with no error
  1. Clear the context and type What are we
  2. Repeat this test
  3. Final text result: What are we searchi
  • TEST_DELAYED_ON_WORD (PASSED):
  1. Clear all text
  2. Click The from the prediction
  3. Type searchi
  4. Tap Space one to apply the auto-highlight suggested word
  5. Text result: And searching
  6. Apply the from the default suggestions
  7. Type aa
  8. Text result: The searching the aa
  9. Backspace until the next text insertion is immediately at the end of searching
  10. VERIFIED: The prediction displays appropriately – ”searchi” and searching
  11. Apply “searchi”
  12. VERIFIED: The original suggestions are displayed, no suggestion is automatically selected / highlighted.
  13. Type another character
  14. VERIFIED: No errors, notifications, or warnings.
  • TEST_DELAYED_ON_SPACE (PASSED):
  1. Clear all text
  2. Click The from the prediction
  3. Type searchi
  4. Tap Space one to apply the auto-highlight suggested word
  5. Text result: And searching
  6. Apply the from the default suggestions
  7. Type aa
  8. Text result: The searching the aa
  9. Backspace until the next text insertion is immediately after the whitespace of searching
  10. VERIFIED: The prediction displays appropriately – ”searchi” and the default suggestions
  11. Apply “searchi”
  12. VERIFIED: The original suggestions are displayed, no suggestion is automatically selected / highlighted.
  13. Type another character
  14. VERIFIED: No errors, notifications, or warnings.
  • TEST_ROBUSTNESS (PASSED):
    Nothing seems to be causing an issue or have strange behavior from a user interaction while testing all the test cases.

GROUP_ANDROID_AMHARIC:

  • TEST_CLEAR_CONTEXT (PASSED):
  1. Keyboard and Model does not show any error when clearing and deleting text
  • TEST_PRED_CHAIN_APPLY (PASSED):
  1. Delete all text
  2. Apply words from suggestions
  3. Methods:
    • Backspace over the text
    • Spacebar
    • Randomly applying suggestions
    • Type a character and apply suggestions based on the typed text
  4. VERIFIED: The predictive text work as expected for all three behaviors
  • TEST_SUGGESTIONS_ON_BKSP (PASSED):
  1. Type qw
  2. Press Spacebar once
  3. VERIFIED: Prediction text show the default suggestions
  4. Tap Backspace once to delete the space
  5. VERIFIED: Multiple suggestions are displayed that I think all are based on the remaining word.
  • TEST_UNSELECTED_KEEP (PASSED):
  1. Clear any pre-existing context
  2. Type ውስጥ. (Positionally, QWERTY xsk.)
  3. Verified:
    • The left-most option displays the typed string and it is not highlighted (and thus, not a candidate for automatic application).
  • TEST_SELECTED_NEAR_MATCH (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Verified:
    • The left-most option displays the typed string, in quotes, and that it is not highlighted.
    • The second-to-left-most option displays a string starting with the typed string that is highlighted (and thus, a candidate for automatic application).
  • TEST_PERIOD_APPLY_OVERWRITE (PASSED):
  1. Clear any pre-existing context.
  2. Type ጽሕ. (Positionally, QWERTY ;y.)
  3. Tap the automatically-highlighted suggestion
  4. Type !
  5. VERIFIED: No whitespace between the applied suggestion and the punctuation mark.
  • TEST_SPACE_APPLY_OVERWRITE (PASSED):
  1. Clear any pre-existing context.
  2. Type ጽሕ. (Positionally, QWERTY ;y.)
  3. Tap the automatically-highlighted suggestion
  4. Type
  5. VERIFIED: Only a single whitespace exists between the applied suggestion and the new text insertion point.
  • TEST_PUNCT_APPLICATION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Then tap a punctuation mark, ! key
  4. VERIFIED:
    • The suggestion applied as expected, with no whitespace between the suggested text and the punctuation mark.
  5. Tap the punctuation mark again
  6. VERIFIED:
    • It outputs a new copy of it.
  • TEST_SPACE_APPLICATION (PASSED):
  1. Type ውስጥል. (Positionally, QWERTY xskl.)
  2. Then tap the key.
  3. VERIFIED:
    • The suggestion applied as expected, with only a single whitespace between the suggestion text and the new text insertion point.
  4. Tap
  5. VERIFIED:
    • It outputs a new .
  • TEST_PERIOD_OVERWRITE_REVERSION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Tap the automatically-highlighted suggestion
  4. Then tap the ! key
  5. VERIFIED:
    • The suggestion-inserted space is removed - that no whitespace between the suggested text and the punctuation mark.
  6. Backspace over the punctuation mark
  7. VERIFIED: The proper reversion displays correctly
  8. Apply the reversion
  9. VERIFIED: No error result
  10. Clear all text
  11. Type 3 words, then a space
  12. Repeat the test
  13. VERIFIED: No error.
  • TEST_PERIOD_APPLICATION_REVERSION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Then tap the base-layer ! key will work nicely.
  4. Backspace over the punctuation mark
  5. VERIFIED: a proper reversion is displayed that will undo the auto-applied suggestion.
  6. Apply the reversion
  7. VERIFIED: no errors result.
  8. Clear the context and type 3 words, then a space, and then repeat this test until reaching this line
  9. VERIFIED: Working as expected.
  • TEST_PERIOD_APPLICATION_DELAYED_REVERSION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Then tap the base-layer ! key will work nicely.
  4. Tap the punctuation mark again
  5. VERIFIED: It outputs a new copy.
  6. Backspace over the newest copy of the punctuation mark
  7. VERIFIED: a proper reversion is displayed
  8. Apply the reversion
  9. VERIFIED: no errors result
  10. Clear the context and type 3 words, then a space, and then repeat this test until reaching this line
  11. VERIFIED: Work as expected.
  • TEST_DELAYED_ON_WORD (PASSED):
  1. Clear any pre-existing context.
  2. Tap one of the default suggestions.
  3. Type ውስጥል. (Positionally, QWERTY xskl.)
  4. Apply the suggestion with a space key
  5. Tap an additional suggestion
  6. Type two additional letters after the tapped suggestion.
  7. Delete text until the text insertion point is immediately after the end of the suggestion applied in step 3
  8. VERIFIED: an appropriate reversion is displayed
  9. Apply the reversion
  10. VERIFIED: The original suggestions are displayed, but no suggestion is automatically selected / highlighted
  11. Type a random character
  12. VERIFIED: No errors, notifications, or warnings.
  • TEST_DELAYED_ON_SPACE (PASSED):
  1. Clear any pre-existing context.
  2. Tap one of the default suggestions.
  3. Type ውስጥል. (Positionally, QWERTY xskl.)
  4. Apply the suggestion with a space key
  5. Tap an additional suggestion
  6. Type two additional letters after the tapped suggestion.
  7. Delete text until the text insertion point is immediately after the whitespace of the suggestion applied in step 3
  8. VERIFIED: an appropriate reversion is displayed with the default suggestions
  9. Apply the reversion
  10. VERIFIED: The original suggestions are displayed, but no suggestion is automatically selected / highlighted
  11. Type a random character
  12. VERIFIED: No errors, notifications, or warnings.
  • TEST_DOUBLE_DELAYED (PASSED):
  1. Clear any pre-existing context.
  2. With the context empty, type two characters and apply a suggestion. (Suggestion "A")
  3. Type another character an apply a suggestion. (Suggestion "B")
  4. Type two characters and apply a suggestion. (Suggestion "C")
  5. Tap backspace
  6. VERIFIED: a reversion for Suggestion "C" is displayed.
  7. Tap the reversion suggestion
  8. VERIFIED: the text matches the text from before Suggestion "C" was applied.
  9. Tap backspace up to the end of applied Suggestion "B"
  10. VERIFIED: a reversion for Suggestion "B" is displayed.
  11. Tap the reversion suggestion
  12. VERIFIED: the text matches the text from before Suggestion "B" was applied.
  13. VERIFIED: the text applied from Suggestion "A" still exists in the context.
  • TEST_REAPPLIED_SUGGESTIONS (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥ. (Positionally, QWERTY xsk.)
  3. Select any suggestion without surrounding quotes.
  4. Tap the backspace key once, then apply the reversion.
  5. The originally chosen suggestion should be visible. Re-apply it.
  6. VERIFIED: No error result, and the suggestion should apply properly.
  • TEST_ROBUSTNESS (PASSED):
    I didn't find anything wrong while doing this test. There has been no error

@Meng-Heng

Copy link
Copy Markdown
Contributor

All test are passed. Can you run the build for iOS?

@keyman-server keyman-server modified the milestones: A19S34, A19S35 Aug 3, 2026
@Meng-Heng

Meng-Heng commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

SUITE_AUTOCORRECTABLE:

  • iPad Air 11-inch M3 on XCode
  • Keyman v19.0.259-alpha-test-16223

Note

I'm seeing this loading behavior again upon launching the app
Screenshot 2026-08-03 at 10 43 32 in the morning
This will go on forever until I dismiss the app

GROUP_IOS_EUROLATIN:

  • TEST_CLEAR_CONTEXT (PASSED):
  1. Type some random words + predictive text
  2. Press "Clear text"
  3. VERIFIED: Predictive text throws no errors.
  • TEST_PRED_CHAIN_APPLY (PASSED):
  1. Applying numerous suggestions
  2. VERIFIED: The words applied properly.
  • TEST_SUGGESTIONS_ON_BKSP (PASSED):
  1. Type Et
  2. Press Spacebar once
  3. The “Etc” highlighted suggestion applied automatically
  4. Tap Backspace once
  5. VERIFIED: The prediction is blank after the spacebar, and return for backspace.
  • TEST_UNSELECTED_KEEP (PASSED):
  1. Clear all text
  2. Type search
  3. VERIFIED: The unhighlighted left-most option issearch.
  • TEST_SELECTED_NEAR_MATCH (PASSED):
  1. Clear all text
  2. Type searchi
  3. VERIFIED: The left-most option display "searchi"
  4. VERIFIED: The second-to-left-most display searching and it is highlighted.
  • TEST_PERIOD_APPLY_OVERWRITE (PASSED):
  1. Clear all text
  2. Type searchi
  3. Click on the highlighted word
  4. Press .
  5. VERIFIED: Text is searching.
  6. VERIFIED: No whitespace between the applied suggestion and the punctuation mark.
  • TEST_SPACE_APPLY_OVERWRITE (PASSED):
  1. Clear all text
  2. Type searchi
  3. Tap the highlighted suggestion
  4. Click Space one
  5. Text result is searching
  6. VERIFIED: Only a single whitespace exists between the applied suggestion and the new text insertion point.
  • TEST_PUNCT_APPLICATION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Click . for automatic application
  4. Text resulting in searching.
  5. VERIFIED: Suggestion applied as expected, with no whitespace between the suggested text and the punctuation mark.
  6. Click .
  7. Text resulting in searching..
  • TEST_SPACE_APPLICATION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Tap Space once for automatic application
  4. Text resulting in searching
  5. VERIFIED: The suggestion applies as expected, with only a single whitespace between the suggestion text and the new text insertion point.
  6. Tap Space again
  7. Text result searching
  • TEST_PERIOD_OVERWRITE_REVERSION (PASSED):
  1. Type searchi
  2. Tap the automatically-highlighted suggestion
  3. Then tap the . key
  4. VERIFIED:
    • The suggestion-inserted space is removed - that no whitespace between the suggested text and the punctuation mark.
  5. Backspace over the punctuation mark
  6. VERIFIED: The proper reversion displays correctly
  7. Apply the reversion
  8. VERIFIED: No error result
  9. Clear all text
  10. Type 3 words, then a space
  11. Repeat the test
  12. VERIFIED: No error.
  • TEST_PERIOD_APPLICATION_REVERSION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Press . for automatic application
  4. Backspace over the punctuation
  5. Text result searching
  6. VERIFIED:
    • The “searchi” reversion is displayed
    • The reversion applied successfully and has no errors result
  7. Clear the context and type 3 words, then a space, and then repeat this test
  8. VERIFIED: The Final text result This search is searchi.
  • TEST_PERIOD_APPLICATION_DELAYED_REVERSION (PASSED):
  1. Clear all text
  2. Type searchi
  3. Tap .
  4. Text result searching.`
  5. VERIFIED: No whitespace exists between the suggestion and the punctuation mark
  6. Tap .
  7. Text result searching..
  8. Backspace over the newest ., the text becomes searching.
  9. VERIFIED:
    • The “searchi” reversion is displayed
    • The reversion applied successfully and has no errors result
  10. Clear the context and type 3 words, then a space, and then repeat this test
  11. VERIFIED: The Final text result One thing is searchi.
  • TEST_DELAYED_ON_WORD (PASSED):
  1. Clear all text
  2. Click The from the prediction
  3. Type searchi
  4. Tap Space one to apply the auto-highlight suggested word
  5. Text result: And searching
  6. Apply the from the default suggestions
  7. Type aa
  8. Text result: The searching the aa
  9. Backspace until the next text insertion is immediately at the end of searching
  10. VERIFIED: The prediction displays appropriately – ”searchi” and searching
  11. Apply “searchi”
  12. VERIFIED: The original suggestions are displayed, no suggestion is automatically selected / highlighted.
  13. Type another character
  14. VERIFIED: No errors, notifications, or warnings.
  • TEST_DELAYED_ON_SPACE (PASSED):
  1. Clear all text
  2. Click The from the prediction
  3. Type searchi
  4. Tap Space one to apply the auto-highlight suggested word
  5. Text result: And searching
  6. Apply the from the default suggestions
  7. Type ee
  8. Text result: The searching the ee
  9. Backspace until the next text insertion is immediately after the whitespace of searching
  10. VERIFIED: The prediction displays appropriately – ”searchi” and the default suggestions
  11. Apply “searchi”
  12. VERIFIED: The original suggestions are displayed, no suggestion is automatically selected / highlighted.
  13. Type another character
  14. VERIFIED: No errors, notifications, or warnings.
  • TEST_DOUBLE_DELAYED (PASSED):
  1. Clear all text
  2. Type Te -> Tap Teams from the suggestion
  3. Text is Teams
  4. Type i -> Tap is from the suggestion
  5. Text is Teams is
  6. Type go -> Tap good from the suggestion
  7. Text is Teams is good
  8. Tap backspace to get the reversion and apply them:
    • Text Teams is go
    • Text Teams i
  9. VERIFIED: The reversions and applications work as expected
  10. Result
    • Text is Teams I by the end of this test.
  • TEST_REAPPLIED_SUGGESTIONS (PASSED):
  1. Clear all text
  2. Type searchi
  3. Choose searchable from the prediction
  4. Tap Backspace once
  5. The original "searchi" is visible
  6. Apply the original typed text
  7. VERIFIED: Applying the text work as expected
  8. The searchable suggestion appears
  9. Applying searched again does not produce any errors
  10. The result text is searchable by the end of this test.
  • TEST_ROBUSTNESS (FAILED):
    I might have found something for this one.

Case 1:

  1. While typing slowly sea + r + c + h + i to form searchi
  2. Observe the word suggestions that it is suggesting based of the typed text
  3. Once we reach searchi
  4. Apply the word searched suggestion
  5. Text result should look like searched
  6. Backspace over typed text slowly until reaching sear
  7. While backspacing, observe the word suggestions
  8. ISSUE: On every backspace, it seems that the suggestion stop suggesting words based on the remaining text.

Case 2:

  1. Continuing from the remaining typed text from Case 1 without clearing any text
  2. Continue to type from the remaining text until the final text is searchi
  3. While typing, keep observing the prediction
  4. ISSUE: After backspacing a couple of times, re-typing the word, the suggestion does not show any related suggestions other than the default suggestions.
Screen.Recording.2026-08-03.at.12.03.39.in.the.afternoon.mov

GROUP_IOS_AMHARIC:

  • TEST_CLEAR_CONTEXT (PASSED):
  1. Keyboard and Model does not show any error when clearing and deleting text
  • TEST_PRED_CHAIN_APPLY (PASSED):
  1. Delete all text
  2. Apply words from suggestions
  3. Methods:
    • Backspace over the text
    • Spacebar
    • Randomly applying suggestions
    • Type a character and apply suggestions based on the typed text
  4. VERIFIED: The predictive text work as expected for all three behaviors
  • TEST_SUGGESTIONS_ON_BKSP (PASSED):
  1. Type qw
  2. Press Spacebar once
  3. VERIFIED: Prediction text show the default suggestions
  4. Tap Backspace once to delete the space
  5. VERIFIED: Multiple suggestions are displayed that I think all are based on the remaining word.
  • TEST_UNSELECTED_KEEP (PASSED):
  1. Clear any pre-existing context
  2. Type ውስጥ. (Positionally, QWERTY xsk.)
  3. Verified:
    • The left-most option displays the typed string and it is not highlighted (and thus, not a candidate for automatic application).
  • TEST_SELECTED_NEAR_MATCH (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Verified:
    • The left-most option displays the typed string, in quotes, and that it is not highlighted.
    • The second-to-left-most option displays a string starting with the typed string that is highlighted (and thus, a candidate for automatic application).
  • TEST_PERIOD_APPLY_OVERWRITE (PASSED):
  1. Clear any pre-existing context.
  2. Type ጽሕ. (Positionally, QWERTY ;y.)
  3. Tap the automatically-highlighted suggestion
  4. Type !
  5. VERIFIED: No whitespace between the applied suggestion and the punctuation mark.
  • TEST_SPACE_APPLY_OVERWRITE (PASSED):
  1. Clear any pre-existing context.
  2. Type ጽሕ. (Positionally, QWERTY ;y.)
  3. Tap the automatically-highlighted suggestion
  4. Type
  5. VERIFIED: Only a single whitespace exists between the applied suggestion and the new text insertion point.
  • TEST_PUNCT_APPLICATION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Then tap a punctuation mark, ! key
  4. VERIFIED:
    • The suggestion applied as expected, with no whitespace between the suggested text and the punctuation mark.
  5. Tap the punctuation mark again
  6. VERIFIED:
    • It outputs a new copy of it: ውስጥም!!
  • TEST_SPACE_APPLICATION (PASSED):
  1. Type ውስጥል. (Positionally, QWERTY xskl.)
  2. Then tap the key.
  3. VERIFIED:
    • The suggestion applied as expected, with only a single whitespace between the suggestion text and the new text insertion point.
  4. Tap
  5. VERIFIED:
    • It outputs a new
  6. Text result: ውስጥም
  • TEST_PERIOD_OVERWRITE_REVERSION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Tap the automatically-highlighted suggestion
  4. Then tap the ! key
  5. VERIFIED:
    • The suggestion-inserted space is removed - that no whitespace between the suggested text and the punctuation mark.
  6. Backspace over the punctuation mark
  7. VERIFIED: The proper reversion displays correctly
  8. Apply the reversion
  9. VERIFIED: No error result
  10. Clear all text
  11. Type 3 words, then a space
  12. Repeat the test
  13. VERIFIED: No error.
  • TEST_PERIOD_APPLICATION_REVERSION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Then tap the base-layer !
  4. Backspace over the punctuation mark
  5. VERIFIED: a proper reversion is displayed that will undo the auto-applied suggestion.
  6. Apply the reversion
  7. VERIFIED: no errors result.
  8. Clear the context and type 3 words, then a space, and then repeat this test until reaching this line
  9. VERIFIED: Working as expected.
  • TEST_PERIOD_APPLICATION_DELAYED_REVERSION (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥል. (Positionally, QWERTY xskl.)
  3. Then tap the base-layer !
  4. Tap the punctuation mark again
  5. VERIFIED: It outputs a new copy.
  6. Backspace over the newest copy of the punctuation mark
  7. VERIFIED: a proper reversion is displayed
  8. Apply the reversion
  9. VERIFIED: no errors result
  10. Clear the context and type 3 words, then a space, and then repeat this test until reaching this line
  11. VERIFIED: Work as expected.
  • TEST_DELAYED_ON_WORD (PASSED):
  1. Clear any pre-existing context.
  2. Tap one of the default suggestions.
  3. Type ውስጥል. (Positionally, QWERTY xskl.)
  4. Apply the suggestion with a space key
  5. Tap an additional suggestion
  6. Type two additional letters after the tapped suggestion.
  7. Delete text until the text insertion point is immediately after the end of the suggestion applied in step 3
  8. VERIFIED: an appropriate reversion is displayed
  9. Apply the reversion
  10. VERIFIED: The original suggestions are displayed, but no suggestion is automatically selected / highlighted
  11. Type a random character
  12. VERIFIED: No errors, notifications, or warnings.
  • TEST_DELAYED_ON_SPACE (PASSED):
  1. Clear any pre-existing context.
  2. Tap one of the default suggestions.
  3. Type ውስጥል. (Positionally, QWERTY xskl.)
  4. Apply the suggestion with a space key
  5. Tap an additional suggestion
  6. Type two additional letters after the tapped suggestion.
  7. Delete text until the text insertion point is immediately after the whitespace of the suggestion applied in step 3
  8. VERIFIED: an appropriate reversion is displayed with the default suggestions
  9. Apply the reversion
  10. VERIFIED: The original suggestions are displayed, but no suggestion is automatically selected / highlighted
  11. Type a random character
  12. VERIFIED: No errors, notifications, or warnings.
  • TEST_DOUBLE_DELAYED (PASSED):
  1. Clear any pre-existing context.
  2. With the context empty, type two characters and apply a suggestion. (Suggestion "A")
  3. Type another character and apply a suggestion. (Suggestion "B")
  4. Type two characters and apply a suggestion. (Suggestion "C")
  5. Tap backspace
  6. VERIFIED: a reversion for Suggestion "C" is displayed.
  7. Tap the reversion suggestion
  8. VERIFIED: the text matches the text from before Suggestion "C" was applied.
  9. Tap backspace up to the end of applied Suggestion "B"
  10. VERIFIED: a reversion for Suggestion "B" is displayed.
  11. Tap the reversion suggestion
  12. VERIFIED: the text matches the text from before Suggestion "B" was applied.
  13. VERIFIED: the text applied from Suggestion "A" still exists in the context.
  • TEST_REAPPLIED_SUGGESTIONS (PASSED):
  1. Clear any pre-existing context.
  2. Type ውስጥ. (Positionally, QWERTY xsk.)
  3. Select any suggestion without surrounding quotes.
  4. Tap the backspace key once, then apply the reversion.
  5. The originally chosen suggestion should be visible. Re-apply it.
  6. VERIFIED: No error result, and the suggestion should apply properly.
  • TEST_ROBUSTNESS (FAILED):
    I’m noticing these error now because the Amharic keyboard has the typed key pressed down after typing the key:

Case 1:

  1. Using the gff_amharic keyboard
  2. Clear any pre-existing context
  3. Apply the left-most suggestion; it should be ላይ
  4. Type ውስጥል (Positionally, QWERTY xskl.)
  5. Tap to apply the highlighted suggestion
  6. Type q (result: )
  7. Backspace over q
  8. At this step, the typed text should look like ላይ ውስጥም
  9. The left-most word suggestion should be the reversion appearing as "ውስጥል" + other suggestions
  10. Do not apply the reversion, instead apply the second-left-most unhighlighted suggestion; it should be ፅኑ
  11. ISSUE: At this step, the typed text should look like ላይ ውስጥምፅኑ (no space between ውስጥም & ፅኑ)
  12. EXPECTED: Shouldn't the text result be ላይ ውስጥም ፅኑ (a space between ውስጥም & ፅኑ)?
Screen.Recording.2026-08-04.at.11.51.21.in.the.morning.mov

Case 2:

  1. Clear any pre-existing context (In the video, I did not)
  2. Type ውስጥል (Positionally, QWERTY xskl.)
  3. Tap the highlighted suggestion
  4. Apply one of the default suggestion; it should be ላይ
  5. At this step, the typed text should look like ውስጥም ላይ
  6. Type f
  7. Notice that the typed key on the keyboard is still highlighted/pressed down because of the different colors
  8. Backspace until the cursor have reached the whitespace after the ውስጥም
  9. ISSUE: No reversion.
  10. Backspace once more for the cursor to land after the word ውስጥም
  11. ISSUE: The suggestion word is ውስጥም instead of ውስጥል
  12. EXPECTED: The reversion ውስጥል should display for this.
Screen.Recording.2026-08-04.at.11.51.57.in.the.morning.mov

@jahorton

jahorton commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author
  • TEST_SELECTED_KHMER_NEAR_MATCH (FAILED):

    1. Clear any pre-existing context.

    2. Type sY which is the incomplete form of sYr

    3. Now without typing r, instead type d

    4. Text result is sYd (សួដ)

    5. FAILED: The left-most option displays the closest correct form to sY and it is not highlighted.

    6. VERIFIED: The second-to-left-most option displays a string starting with the typed string.
      Screenshot 2026-07-22 at 4 01 37 in the afternoon

SUITE_WITHOUT_AUTOCORRECT:
GROUP_IOS_KHMER:
TEST_SELECTED_KHMER_NEAR_MATCH (PASSED):

Per the top-level test spec:

TEST_SELECTED_KHMER_NEAR_MATCH: Using Keyman for Android, verify that typing a complete, correctly-spelled word does not result in a selected suggestion matching the word.

  1. Clear any pre-existing context.
  2. Type most of a Khmer word, but replace one letter with a different one nearby on the keyboard.
  3. Verify that the left-most option displays the typed string and that it is not highlighted.
  4. Verify that the second-to-left-most option displays a string starting with the typed string.
  1. VERIFIED: The left-most option displays the closest correct form to sYd and it is not highlighted.

This matches the original step 3, which asked for sYd, what you actually typed - not sY, what was there before the letter typed in step your 3.

@keymanapp-test-bot keymanapp-test-bot Bot added user-test-failed and removed user-test-failed user-test-required User tests have not been completed labels Aug 3, 2026
@Meng-Heng

Copy link
Copy Markdown
Contributor

@jahorton, I edited the comment above with the results for the remaining iOS tests. Only the TEST_ROBUSTNESS tests has failed. The steps are complex to describe, but I recorded the video for each cases so if there is any confusion or clarification test, you can let me know.

@jahorton

jahorton commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

OK, for the Eurolatin version of "robustness", fortunately, that one is probably addressed already - see #16290. I haven't yet merged its changes into this one, so you'd still see that issue here.

I'll need to look into the Amharic one with more detail.

@jahorton

jahorton commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

I've now made #16307 to address the GROUP_IOS TEST_ROBUSTNESS failures.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

3 participants