Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(web): modular app/webview KMW hosted within Android app 🧩 #8544

Merged
merged 52 commits into from
May 15, 2023

Conversation

jahorton
Copy link
Contributor

@jahorton jahorton commented Mar 29, 2023

🎉 Big milestone! 🎉

With these changes in place, the Android app has been (lightly) tested to work with a fully-modular, bundled Keyman Engine for Web core!

Turns out there were a few loose threads here and there to mend and reconnect - it did take most of a day to debug the biggest issues and resolve things to the current state shown in this PR. But...

  • basic predictive text operations are up and running
  • standard context manipulation appears to check out
  • new-context layer-change events are running and affecting prediction casing
  • longpress operations still check out, as does the globe key triggering the keyboard menu
  • hardware keystrokes do appear to be processed correctly (though, again, I've only done light testing)

Other details:

  • The keyboard-host pages for Android and iOS no longer contain a <textarea> element; the context is managed in pure TS / compiled JS.
    • For the app/webview format, keyman.context serves that role now.
  • In fact, webpage-integration code - the "element wrapper" system and all associated "element attachment" mechanisms - all of that is entirely absent from the app/webview Web build product.
  • In converting our Sentry-integration setup to modular form... well... turns out we can't quite directly import the Sentry libraries and directly integrate with them.
    • esbuild falls over due to unsupported code transformation rules when targeting ES5, which we do b/c of our Android 5.0 support (and possibly other environments, too)
    • We need to import KEYMAN_VERSION stuff, so... we'll either have to prepend bundled Sentry or include it in the asset bundles directly.
    • I opted for the latter and have made the necessary changes for both mobile apps.
  • I was a bit surprised at the size of the build product - it clocks in at 461 kB.
    • This is after resolving an issue that prevented tree-shaking of the fully-sourcemapped debug variant of lm-worker, which bloated the result past 1 MB.
    • Possibly of note: the lm-worker component it includes (without Worker sourcemaps at all) should be around 133 kB.
      • I think that this piece is notably larger than it used to be... likely due to the changes that facilitate debug-mode sourcemapping.
  • I did some investigation with the minifyIdentifiers flag, which was disabled for the result above.
    • I believe it's actually safe to use - it preserves names on exported & exposed classes, but minifies things internally otherwise.
    • Enabling it for the app/webview build brings the size down from 461 kB to 378 kB.
  • engine/main (and other engine/ components) are written in a manner that avoids the assumption that a consistent "singleton" variable / reference point exists.
    • One ramification: window['keyman'] is not assumed to exist for code at that level.
    • 🚧 At the present time, the app/ level components also avoid this assumption. This should be safe to relax (even long-term) for app/webview, though.

🚧 Known issues 🚧:

  • So, I kind of disconnected the setIsChiral connections in favor of chasing down... everything else. I'm out of time to address that at the moment, unfortunately.

User Testing

Since there has been a lot of changes - some small, some large - under the hood in pursuit of full modularization, we're going to want a near-full regression-test suite on this PR. At minimum. I may add other tests at a later point. But that should give us a good testing baseline to start with.

Gather Assets for Testing

  • Physical Android phone (record device's Android -- versions 5, 9 and 12)
  • External Bluetooth or USB QWERTY keyboard
  • External Bluetooth or USB AZERTY keyboard (European AZERTY layout with 102nd key)

Setup Steps

  1. Uninstall previous version of Keyman on the device (don't forget to reset user settings for the app; in Android Pie: Settings>Storage>Other apps>Keyman>Clear Data)
  2. Install test build APK off of TBD
  3. Accept all the Android permission requests for storage (applies to Android 6.0 Marshmallow onward)

User Testing

SUITE_ANDROID_MENU_FUNCTIONALITY: Menu Functionality Tests

click to expand

Various versions of Androids

UI for these tests assume default English locale

  • GROUP_ANDROID_5
  • GROUP_ANDROID_9
  • GROUP_ANDROID_12
  • TEST_GET_STARTED: This tests the "Get Started" menu from a fresh installation

    Expand to see how to do and verify this
    1. When the app loads, verify the "Get Started" menu is visible
    2. From the "Get Started" menu, touch "Add a keyboard for your language"
    3. Verify "Install Keyboard or Dictionary" menu appears
    4. From the "Install Keyboard or Dictionary" menu, click the back arrow to return to "Get Started"
    5. From the "Get Started" menu, touch "Enable Keyman as system-wide keyboard"
    6. Verify Android system menus appear for controlling virtual keyboard
    7. Scroll down and enable Keyman as a system keyboard.
    8. On the "Attention" dialog, read and hit "OK" to dismiss the dialogs.
    9. Touch the back button to return to "Get Started"
    10. Verify "Enable Keyman as system-wide keyboard" now has a ticked checkbox.
    11. From the "Get Started" menu, touch "Set Keyman as default keyboard"
    12. On the "Change keyboard" dialog, select Keyman
    13. Verify on the "Get Started" menu that "Set Keyman as default keyboard" now has a ticked checkbox.
    14. From the "Get Started" menu, touch "More info"
    15. Verify the Info page appears with a version string at the bottom of the page
    16. Touch the back button (arrow) to return to "Get Started"
    17. From the "Get Started" menu, untick the last option 'Show "Get Started" on startup'
    18. Close the "Get Started" menu and exit the app.
    19. From the Android device, start Keyman for Android
    20. Verify the "Get Started" menu does not appear.
  • TEST_INSTALL_KD: This menu is accessed via Get Started menu or the Settings button-->"Install Keyboard or Dictionary"

    1. On the device, enable internet connectivity
    2. Touch "Install from keyman.com"
    3. Verify a new keyboard can be downloaded and selected
    4. On the device, disable internet connectivity
    5. From "Install Keyboard or Dictionary", touch "Install from keyman.com"
    6. Verify device displays a message "Cannot connect to Keyman server!"
    7. On the device, re-enable internet connectivity

  • TEST_KEYMAN_SETTTINGS:

    Expand to see how to do and verify this
    1. From "Settings" --> "Installed Languages"
    2. Select "English" --> English Settings
    3. Select keyboard settings menu
    4. Verify Info appears with keyboard version, help link, and QR code
    5. If keyboard update is available, click on version and verify update
    6. If help link is available, click on link
    7. Verify keyboard help documentation appears
    8. Return to English Settings menu
    9. Select Dictionary --> English dictionary (MTNT)
    10. Verify the Dictionary info appears
    11. Return to English Settings menu
    12. Turn on/off 'Enable Predictions' and validate each
    13. Turn on/off 'Enable Corrections' and validate each. For example, when Corrections are enabled and context "tooo" should still suggest "too"
    14. Validate that when both predictions and corrections are off, banner is not visible
    15. Add/Remove dictionaries - validate
    16. If multiple dictionaries are available, test swapping between them

  • TEST_SHARE: Type and verify text can be shared to external app

  • TEST_KEYMAN_BROWSER: Keyman Browser ###

    1. On default page, click on text field and set system keyboard to Keyman
    2. Verify can type with Keyman as system keyboard
    3. Close and reopen Keyman app

  • TEST_TEXT_SIZE: Verify text can be rescaled from Text Size 16 to 72

  • TEST_CLEAR_TEXT: Verify text can be cleared

  • TEST_INFO:

    1. From the device, disable internet access
    2. From the Keyman app menu, select "Info"
    3. Verify Keyman for Android version appears at the bottom of the screen
    4. Verify Keyman for Android help documentation is displayed.
    5. From the device, enable internet access

  • TEST_INSTALL_UPDATES: This menu option only appears when a language resource (keyboard or lexical-model) update is available

    Expand to see how to do and verify this
    1. Download an old version of sil_cameroon_qwerty
    2. On the device, set airplane mode on (turns off internet access)
    3. On the device, go to settings, and manually set the date to 1 year in the past (e.g. May 2021)
    4. Start Keyman for Android
    5. From the Keyman Settings, install the local kmp file sil_cameroon_qwerty.kmp (will be an old version 6.0.4)
    6. Close Keyman
    7. On the device, go to settings and set the date to automatically update from internet
    8. On the device, turn off airplane mode (turns on internet access)
    9. On the device, go to settings and verify the date is updated
    10. Launch Keyman for Android
    11. Dismiss "Get Started" and wait for the catalog to update
    12. After a while, there should be a notification of a keyboard update being available
    13. At the bottom of the Keyman overflow menu, verify keyboard update is available
    14. Click on "Install Updates"
    15. Accept "Download" on the dialogue
    16. Verify resource is updated after background download complete

  • TEST_CHANGE_DISPLAY_LANG: This tests changing the display language for the App and assumes starting with English locale

    1. From "Settings" --> "Display Language"
    2. Select "Khmer"
    3. From "Settings" --> Verify menu selections in Khmer
    4. From the overflow menu --> clear text
    5. Verify Keyman text field has Khmer prompt (for "Start typing here")
    6. From "Settings" --> "Change Display Language"
    7. If the string is translated, the first row should be "Default Locale" in Khmer
    8. Select "English"
    9. Verify the app reloads in English

  • TEST_ADJUST_K_HEIGHT: This menu option allows the user to adjust the OSK height for the current orientation (portrait or landscape). The customized height is saved as a preference

    Expand to see how to do and verify this
    1. Have the device in portrait orientation
    2. From "Settings" --> "Adjust keyboard height"
    3. On the menu, drag the OSK height to change the keyboard height
    4. Click back
    5. Verify the OSK is refreshed to the selected height
    6. From "Settings" --> "Adjust keyboard height"
    7. Click the "reset to defaults" button and then click back
    8. Verify the OSK reverts to the original height
    9. Rotate the device to landscape orientation
    10. From "Settings" --> "Adjust keyboard height"
    11. On the menu, drag the OSK height to change the keyboard height
    12. Click back
    13. Verify the OSK is refreshed to the selected height
    14. From "Settings" --> "Adjust keyboard height"
    15. Click the "reset to defaults" button and then click back
    16. Verify the OSK reverts to the original height
    17. Rotate the device back to portrait orientation

  • TEST_SPACEBAR_CAPTION: This menu option allows the user to adjust the label displayed on the keyboard spacebar

    Expand to see how to do and verify this
    1. Select the default SIL EuroLatin keyboard
    2. From "Settings" --> Spacebar caption
    3. On the menu, select "Language"
    4. Click back until the OSK is displayed
    5. Verify the spacebar label is "English"
    6. From "Settings" --> Spacebar caption
    7. On the menu, select "Keyboard"
    8. Click back until the OSK is displayed
    9. Verify the spacebar label is "EuroLatin (SIL)"
    10. From "Settings" --> Spacebar caption
    11. On the menu, select "Blank"
    12. Click back until the OSK is displayed
    13. Verify the spacebar label is blank
    14. From "Settings" --> Spacebar caption
    15. On the menu, select "Language+Keyboard"
    16. Click back until the OSK is displayed
    17. Verify the spacebar label is "English - EuroLatin (SIL)"

SUITE_ANDROID_KEYBOARD_FUNCTIONALITY: Keyboard Tests

click to expand

Various versions of Androids

UI for these tests assume default English locale

  • GROUP_ANDROID_5
  • GROUP_ANDROID_9
  • GROUP_ANDROID_12

In-app Keyboards

These tests are run in the context of typing in the Keyman app

click to expand
  • TEST_INAPP_LATIN_KEYBOARD_PORTRAIT: English(EuroLatin SIL)
    In portrait orientation, verify OSK is visible and fills the width the bottom of the screen

    1. Verify long-press q key works
    2. Verify long-press p key works
    3. Verify uppercase layer can be selected via SHIFT
    4. Verify number layer can be selected via 123
    5. Verify long-press 1 key works
    6. Verify long-press 0 key works
    7. Verify backspace, space, and enter keys work
    8. Verify Khmer -> Khmer Angkor keyboard can be added via Settings menu

  • TEST_INAPP_LATIN_KEYBOARD_LANDSCAPE: English(EuroLatin SIL)
    In portrait orientation, verify OSK is visible and fills the width the bottom of the screen

    1. Verify long-press q key works
    2. Verify long-press p key works
    3. Verify uppercase layer can be selected via SHIFT
    4. Verify number layer can be selected via 123
    5. Verify long-press 1 key works
    6. Verify long-press 0 key works
    7. Verify backspace, space, and enter keys work
    8. Verify Khmer -> Khmer Angkor keyboard can be added via Settings menu

  • TEST_INAPP_LONG_PRESS: English(EuroLatin SIL)

    Type on the OSK using the following scenarios and verify expected output:

    1. Clicking a suggestion on the suggestion banner - should insert the suggestion
    2. short-press a key and release - should insert the base key
    3. long-press a key, select a long-press key, and release - should insert the long-press key
    4. long-press a key, while keeping the finger down, move off the long-press options, and release - should not output
    5. long-press a key, while keeping the finger down, move off the long-press options, then move back on a long-press option so it's highlighted, and release - should output the long-press key
    6. quickly type a long paragraph (e.g. repeat the word "reply") - verify long-press keys don't get stuck (displayed when not touching a key)

  • TEST_INAPP_NON_LATIN_KEYBOARD: Non-Latin script Keyboard

    1. In the app, add/select a random non-Latin script keyboard
    2. Verify OSK is visible
    3. Test several keys and modifiers and verify Latin characters are not appearing.

  • TEST_INAPP_ROTATE_P-TO-L:

    1. With Keyman not active, load it in a portrait orientation.
    2. Once loaded, rotate the device to a landscape orientation.
      • On Android devices, you may need to press something like this for the rotation to occur:
      • The test "passes" if the OSK rotates properly.

  • TEST_INAPP_ROTATE_L-TO-P:

    1. With Keyman not active, load it in a landscape orientation.
    2. Once loaded, rotate the device to a portrait orientation.
      • On Android devices, you may need to press something like this for the rotation to occur:
      • The test "passes" if the OSK rotates properly.

System Keyboards

These tests are run with Keyman selected as a system keyboard, and in the context of typing in an external app (like Google Keep)

click to expand
  • TEST_SYSTEM_LATIN_KEYBOARD_PORTRAIT: English (EuroLatin SIL)
    In portrait orientation, verify OSK is visible and fills the width the bottom of the screen

    1. Verify long-press q key works
    2. Verify long-press p key works
    3. Verify uppercase layer can be selected via SHIFT
    4. Verify number layer can be selected via 123
    5. Verify long-press 1 key works
    6. Verify long-press 0 key works
    7. Verify backspace, space, and enter keys work
    8. Verify can change to random non-Latin script keyboard via globe button

  • TEST_SYSTEM_LATIN_KEYBOARD_LANDSCAPE: English(EuroLatin SIL)
    In portrait orientation, verify OSK is visible and fills the width the bottom of the screen

    1. Verify long-press q key works
    2. Verify long-press p key works
    3. Verify uppercase layer can be selected via SHIFT
    4. Verify number layer can be selected via 123
    5. Verify long-press 1 key works
    6. Verify long-press 0 key works
    7. Verify backspace, space, and enter keys work
    8. Verify Khmer -> Khmer Angkor keyboard can be added via Settings menu

  • TEST_SYSTEM_LONG_PRESS: English(EuroLatin SIL)

    Type on the OSK using the following scenarios and verify expected output:

    1. Clicking a suggestion on the suggestion banner - should insert the suggestion
    2. short-press a key and release - should insert the base key
    3. long-press a key, select a long-press key, and release - should insert the long-press key
    4. long-press a key, while keeping the finger down, move off the long-press options, and release - should not output
    5. long-press a key, while keeping the finger down, move off the long-press options, then move back on a long-press option so it's highlighted, and release - should output the long-press key
    6. quickly type a long paragraph (e.g. repeat the word "reply") - verify long-press keys don't get stuck (displayed when not touching a key)

  • TEST_KEYBOARD_PICKER: Keyboard Picker menu to switch input method
    This tests the Keyboard Picker menu which lists other system input methods at the bottom of the menu. These appear only in Keyman system keyboard

    1. With only 1 Keyman keyboard installed and selected as a system keyboard, long-press and release the the globe button
    2. Verify the bottom of the Keyboards picker menu lists other available input methods
    3. Click on one of the other input methods
    4. Verify the Keyman system keyboard switches to the selected input method
    5. On the device's Settings, select Keyman as the input method
    6. On the Keyman keyboard, short-press and release the globe button
    7. Verify the previous input method is selected

  • TEST_SYSTEM_ROTATE_P-TO-L:

    1. With Keyman not active, load it in a portrait orientation.
    2. Once loaded, rotate the device to a landscape orientation.
      • On Android devices, you may need to press something like this for the rotation to occur:
      • The test "passes" if the OSK rotates properly.

  • TEST_SYSTEM_ROTATE_L-TO-P:

    1. With Keyman not active, load it in a landscape orientation.
    2. Once loaded, rotate the device to a portrait orientation.
      • On Android devices, you may need to press something like this for the rotation to occur:
      • The test "passes" if the OSK rotates properly.

  • TEST_EXT_BLUETOOTH_KEYBOARD: External (Bluetooth) keyboard
    This test is run with an external keyboard (USB or bluetooth) connected to the device

    Expand to see how to do and verify this
    1. Start with English(EuroLatin SIL) as the selected keyboard
    2. On the device's Settings, show the input method (OSK)
    3. Verify can type with numbers, letters, and punctuation
    4. Verify caps lock has no effect when typing
    5. Verify long-press on a character repeats that character
    6. Verify tab toggles to next field
    7. Verify enter adds a newline
    8. Verify backspace removes a character
    9. Verify ctrl+tab brings up the keyboard picker menu
    10. Use tab or arrow keys to navigate the keyboard picker menu
    11. Select a non-Latin keyboard
    12. Resume typing and verify new script appears
  • TEST_EXT_AZERTY_KEYBOARD: External European AZERTY keyboard
    This test is run with an external European AZERTY keyboard paired to the device. It should contain the 102nd key <> on the bottom row next to the left-shift.

    1. Start Keyman and install the French Basic keyboard
    2. From the physical keyboard, type on the top letter row (azerty)
    3. Verify azerty appears
    4. Type on the 102nd key
    5. Verify < appears
    6. Type shift-102nd key
    7. Verify > appears

SUITE_ANDROID_KNOWN_BUGS: drawn from a list of bugs

click to expand

Various versions of Androids

UI for these tests assume default English locale

  • GROUP_ANDROID_5
  • GROUP_ANDROID_9
  • GROUP_ANDROID_12
  • TEST_GLOBE_KEY Holding backspace should not trigger a longpress on another random key (7155)

    1. In the Keyman app with the default sil_euro_latin keyboard and lexical model enabled, start typing a word
    2. Accept a suggestion
    3. Type another letter
    4. Hold the backspace key
    5. The previous letter is deleted
    6. Observe the longpress menu of the previous letter appearing
    7. FAIL this test if the longpress menu of the previous letter appears
  • TEST_SUGGESTION_NO_CAPITAL Initial suggestions when starting a new field are not always Initial cased (7165)

    1. In the Keyman app with the default sil_euro_latin keyboard and lexical model enabled, start typing some text (any text really)
    2. Clear the text using the option from the top right menu and observe the suggestion banner
    3. If the banner doesn't suggest words with capitalization, FAIL this test.
  • TEST_BROKEN_SUGGESTION selecting the "undo" suggestion breaks subsequent input (7167)

    When we select the "undo" suggestion that becomes available with Backspace after accepting a suggestion, on the next keystroke Keyman inserts a broken suggestion.

    1. In Keyman for Android, type Prob.
    2. Select Problem from banner.
    3. Press Backspace, then select "Prob" (undoing the last suggestion).
    4. Then press Spacebar.
    5. If Prob is shown, PASS this test; otherwise if Prothe or Problem !
  • TEST_SHIFT_KEY_STUCK At start of input, pressing globe key, going back, leads to stuck shift key (7169)

    1. In Keyman for Android with the default keyboard on, press and hold the globe key to open the keyboard menu
    2. Press the < button on the top left of the screen or Android' back button at the bottom of the screen
    3. If the Shift key is stuck and unusable, FAIL this test.
  • TEST_REDUCED_TOAST_NOISE - Verifies the number of Toast notifications are reduced (7170)

    1. Install the PR build of Keyman for Android
    2. Launch the app and observe the "Get Started" menu is displayed
    3. Verify there's no Toast notification about checking the cloud catalog for updates
    4. Dismiss the "Get Started" menu and go to Keyman settings --> Installed Languages
    5. Click on "+" and search for "afade" language keyboard to install (install a keyboard that has no associated dictionary)
    6. Install sil_cameroon_azerty and install the keyboard for the "Afade" language"
    7. After the keyboard package is installed, verify no Toast notifications appear about checking for associated dictionary
    8. Go to Keyman Settings --> Installed Languages --> Afade
    9. On the Afade language settings menu, click the bottom "Dictionary - Check for available dictionary"
    10. Verify a Toast notification appears about checking for associated dictionary to download
    11. Wait a few minutes and verify no additional toast notifications appear
    12. Go to Keyman settings --> Installed Languages
    13. Click on "+" and search for khmer_angkor (install a keyboard that has an associated dictionary)
    14. Install khmer_angkor
    15. After the keyboard package is installed, verify:
    • no Toast notifications appear about "checking for associated dictionary"
    • two Toast notifications do appear about a "dictionary being installed in the background" and eventually "Resources successfully updated" (this may take a while depending on network lag)


SUITE_IOS_MENU_FUNCTIONALITY: Menu Functionality Tests, in-app##

click to expand
  • GROUP_IPHONE_PORTRAIT: portrait mode in iPhone
  • GROUP_IPHONE_LANDSCAPE: landscape mode in iPhone
  • GROUP_IPAD_PORTRAIT: portrait mode in iPad
  • GROUP_IPAD_LANDSCAPE: landscape mode in iPad

Test Cases

  • TEST_GET_STARTED: Get Started

    • Verify touching Add a keyboard for your language pulls up the keyboard search
      • This should also be accessible as Settings > Installed Languages > +.
    • Verify touching Enable Keyman as system-wide keyboard pulls up Keyman's menu within iOS settings. (11.0+ devices)
      • If older versions of iOS are supported, ensure that the help page for doing it manually is properly linked.
    • Verify touching More info brings up an accurate version and the main table-of-contents help page.
      • This should also be accessible as Info from the main menu dropdown (on phones) or as the circled-i button (on tablets).
    • Set Don't show again to checked, close and re-open Keyman, and verify Get Started menu does not appear
  • TEST_ADD_NEW_KEYBOARD: Add New Keyboard
    This menu is accessed via Get Started menu or Settings menu

    • On the device, enable internet connectivity
    • Verify a new keyboard can be downloaded and selected, say "US Basic"
    • Return to the text input screen and confirm that it operates correctly.
    • Without changing selected language, confirm that it can be cleanly deleted via the Settings menu.
    • Confirm that another keyboard is correctly selected afterward.
  • TEST_ADD_NEW_KEYBOARD_FROM_FILE:

    • On the device, go to keyman.com on Safari
    • Search for "US Basic"
    • scroll down to keyboard details and tap to download the keyboard package (i.e. .kmp file)
    • open Files app and navigate to Download folder to find "basic_kbdus.kmp" and tap on it to start the installation processes
    • Keyman app should be pulled up
    • follow the screen to finish the keyboard installation
    • verity that the keyboard is correctly installed and working as expected
  • TEST_SWITCH_KEYBOARD

    • press on the globe key
    • the keyboard menu should be shown
    • press on a keyboard to switch to, say "EuroLatin (SIL)"
    • confirm that "EuroLatin (SIL)" is now selected and ready to be used
    • swich back to "US Basic" and confirm it does as expected
  • TEST_TEXT_SIZE: Text Size

    • Verify text can be rescaled from Text Size 9 to 72
  • TEST_CLEAR_TEXT: Clear Text

    • Verify text can be cleared
  • TEST_INFO: Info

    • Verify that the Keyman iOS version is displayed; record the version
    • Verify that the Info menu options matches that of the More Info... option from the Get Started menu option.
    • Verify that the Keyman iOS version matches the version string seen at (Home Screen) > [iOS] Settings > Keyman.
  • TEST_SETTINGS: Settings

    • Installed Languages ... Add Language

    • Select an installed language ... Add (another) Keyboard

      • Should automatically perform a filtered search based upon that language's BCP-47 code, i.e. for "English" it should be seen as shown in the screenshot below.
    • Select an installed language ... Dictionary

      • Turn on/off 'Enable Predictions' and validate each
      • Turn on/off 'Enable Corrections' and validate each
    • Validate that when both predictions and corrections are off, banner is not visible

    • Add/Remove dictionaries - validate

    • If multiple dictionaries are available, test swapping between them

  • TEST_EUROLATIN: English (Eurolatin) in-app

    • In portrait orientation, verify that the OSK appears and fills the width the bottom of the screen
    • Verify long-press q key works
    • Verify long-press k key works
      • Verify that any predictive suggestions generated feel 'reasonable' (based upon 'k', the selected subkey, or one of its neighbors)
    • Verify uppercase layer can be selected via SHIFT
    • Verify number layer can be selected via 123
    • Verify long-press 1 key works
    • Verify long-press 0 key works
    • Verify backspace, space, and enter keys work

Note that EuroLatin2, a highly customized keyboard explicitly designed for mobile, is not found; hence EuroLatin (SIL) is used for testing this instead.

  • TEST_US_BASIC: English: US Basic in-app
    • Verify that the US Basic keyboard can be downloaded through Settings > Installed Languages > English > +
      • This should automatically bring up search results for English keyboards.
      • When the package-installer launches, English should be the one pre-selected language.
    • Install the package for both English and Tagalog by selecting both of them in the installation processes.
    • Set English: US Basic as the active in-app keyboard.
    • Verify that predictive text suggestions appear.
    • Set Tagalog: US Basic as the active in-app keyboard.
    • Verify that predictive text suggestions do not appear.
    • Verify that long-press 123 key works, presenting options for a currency layer and a symbol layer.
    • Select the currency layer, then press the £ key.
    • Verify that the keyboard outputs correctly and returns to the default layer.
    • Go to the symbol layer and press the © key.
    • Verify that the keyboard outputs correctly and remains on the symbol layer.
    • Revert to the default layer and ensure basic key inputs work.
    • Long-press e on the default layer and select a subkey.
    • Verify that the selected key produces the correct output.
    • From the Settings > Languages > English > US Basic menu, follow the "Help link" and ensure it displays appropriate help.
      • (Should work both online and offline)
    • From the Settings > Languages > English > US Basic menu, scan the QR code with a phone and test that it links to the current version of that keyboard's public download page on keyman.com.
    • Returning to the app, uninstall the US Basic keyboard via Settings for Tagalog.
    • Set English: US Basic as the active in-app keyboard.
    • Verify that the keyboard appears correctly and ensure basic key inputs work.
      • This is to ensure that uninstalling for one language doesn't adversely affect installations of the same resource for another language.
    • Uninstall the US Basic keyboard via Settings for English.

SUITE_IOS_SYSTEM_KEYBOARD:

click to expand
  • GROUP_IPHONE_PORTRAIT: portrait mode in iPhone
  • GROUP_IPHONE_LANDSCAPE: landscape mode in iPhone
  • GROUP_IPAD_PORTRAIT: portrait mode in iPad
  • GROUP_IPAD_LANDSCAPE: landscape mode in iPad

Test the following after setting Keyman as a system keyboard.

Test Cases

  • TEST_BASIC_USAGE: ensure that the keyboards functions as expected on all layers. Please test on multiple keyboards, i.e. EuroLatin (SIL), Cameroon QWERTY keyboard and Khmer Angkor.
  • TEST_LONG_PRESS: ensure that longpress on all applicable layers are working as intended
  • TEST_GLOBE_KEY: ensure that a short press on the globe key switch to the next keyboard and a longpress on it open the keyboard menu where you can select a keyboard of your choice

@jahorton jahorton added this to the A17S9 milestone Mar 29, 2023
@keymanapp-test-bot keymanapp-test-bot bot added has-user-test user-test-required User tests have not been completed labels Mar 29, 2023
@keymanapp-test-bot
Copy link

keymanapp-test-bot bot commented Mar 29, 2023

User Test Results

Test specification and instructions

🟥 SUITE_ANDROID_MENU_FUNCTIONALITY: Menu Functionality Tests

  • 🟥 GROUP_ANDROID_5:

    • TEST_GET_STARTED (PASSED): Tested with the attached build (17.0.86-alpha-test-8544) in Android 5 / API 21 emulator and here is my observation: 1. Verified that all the options from Get Started dialog is working as expected.
    • TEST_INSTALL_KD (PASSED): Verified that the keyboard is working as expected.
    • 🟥 TEST_KEYMAN_SETTTINGS (FAILED): notes below (notes)
    • TEST_SHARE (PASSED): Verified that it is possible to share the typed text via Gmail and Messages applications using the Share option. Seems to be working as expected.
    • 🟩 TEST_KEYMAN_BROWSER (SKIPPED): This feature has been removed from Keyman 17.0 alpha build. Hence, I skipped this test.
    • TEST_TEXT_SIZE (PASSED): Verified that the Text Size functionality is working as expected.
    • TEST_CLEAR_TEXT (PASSED): Verified that the Clear Text option is working as expected.
    • TEST_INFO (PASSED): Verified that the Information documents opens with current Keyman Version. Seems to be working as expected. (notes)
    • TEST_INSTALL_UPDATES (PASSED): Verified that the Install Updates option appears on the Keyman menu list after changed to current date with Airplane mode off. Able to update the sil_cameroon_qwerty keyboard version. (notes)
    • TEST_CHANGE_DISPLAY_LANG (PASSED): Verified that the Change Display Settings functionality is working as expected.
    • TEST_ADJUST_K_HEIGHT (PASSED): Able to change the Keyboard height in both Portrait and Landscape view using Adjust Keyboard height option.
    • TEST_SPACEBAR_CAPTION (PASSED): Verified that the Spacebar caption functionality is working as expected.
  • 🟩 GROUP_ANDROID_9:

    • TEST_GET_STARTED (PASSED): Tested with the attached PR build (Keyman 17.0.82-alpha-test-8544)in Android 9 / API 28 emulator and here is my observation: 1. Verified the "Add a keyboard...", "Enable Keyman as..", "Set Keyman as .." and More Info options and they are working as expected. Also, verified the 'Show 'Get Started' on startup' feature. Seems to be working as expected.
    • TEST_INSTALL_KD (PASSED): Verified that I am able to install a keyboard if it is connected with internet. And it is showing warning message "Cannot connect to Keyman server!", if I disable the internet connectivity.
    • TEST_KEYMAN_SETTTINGS (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in Android 9.0 / API 28 emulator and here is my observation: 1. After removed the English Dictionary (MTNT) file, there is no suggestion banner appear with the Keyboard. 2. After disabling Predictions / Corrections option, the suggestion banner disappears from the Keyboard. Seems to be working as expected.
    • TEST_SHARE (PASSED): Verified that I am able to share text to some external app like Notepad.
    • 🟩 TEST_KEYMAN_BROWSER (SKIPPED): It seems that the Keyman browser functionality has been removed from the Keyman 17.0 Alpha build. Hence, I Skipped the test.
    • TEST_TEXT_SIZE (PASSED): Able to resize the text size from 16 to 72 in the text input screen.
    • TEST_CLEAR_TEXT (PASSED): Able to Clear the text in the text input screen.
    • TEST_INFO (PASSED): Able to see the Information page after clicking the Info option. (notes)
    • TEST_INSTALL_UPDATES (PASSED): Verified that the Install Updates option is working as expected. (notes)
    • TEST_CHANGE_DISPLAY_LANG (PASSED): Able to change the UI language using Display Language options.
    • TEST_ADJUST_K_HEIGHT (PASSED): Able to adjust the Keyboard height in the Portrait mode.
    • TEST_SPACEBAR_CAPTION (PASSED): Verified that the Space bar options are working as expected.
  • 🟩 GROUP_ANDROID_12:

    • TEST_GET_STARTED (PASSED): Tested with the attached PR build (Keyman 17.0.82-alpha ) in Android 12 / API 31 emulator and here is my observation: 1. Verified the "Add a keyboard...", "Enable Keyman as..", "Set Keyman as .." and More Info options and they are working as expected. Also, verified the 'Show 'Get Started' on startup' feature. Seems to be working as expected. (notes)
    • TEST_INSTALL_KD (PASSED): Verified that I am able to install a keyboard if it is connected with internet. And it is showing warning message "Cannot connect to Keyman server!", if I disable the internet connectivity.
    • TEST_KEYMAN_SETTTINGS (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in Android 12.0 / API 31 emulator and it is working as expected.
    • TEST_SHARE (PASSED): Verified that I am able to share text to some external app like Messages.
    • 🟩 TEST_KEYMAN_BROWSER (SKIPPED): Keyman Browser is removed from Keyman 17.0 CI build. Hence, I skipped this test. (notes)
    • TEST_TEXT_SIZE (PASSED): Able to resize the text size from 16 to 72 in the text input screen.
    • TEST_CLEAR_TEXT (PASSED): Able to Clear the text in the text input screen.
    • TEST_INFO (PASSED): Able to see the Information page after clicking the Info option.
    • TEST_INSTALL_UPDATES (PASSED): Tested with the attached build (Keyman 17.0.82-alpha-test-8544) and verified that the Install Updates functionality is working as expected. (notes)
    • TEST_CHANGE_DISPLAY_LANG (PASSED): Verified that the Default Locale name has been changed to Khmer after the changing the UI into Khmer. Seems to be working as expected. (notes)
    • TEST_ADJUST_K_HEIGHT (PASSED): Able to adjust the Keyboard height in both Portrait and Landscape mode.
    • TEST_SPACEBAR_CAPTION (PASSED): Verified that the Space bar options are working as expected.

✅ SUITE_ANDROID_KEYBOARD_FUNCTIONALITY: Keyboard Tests

42 tests in 3 groups PASSED
  • ✅ GROUP_ANDROID_5:

    14 tests PASSED
    • TEST_INAPP_LATIN_KEYBOARD_PORTRAIT (PASSED): Verified that the long-press key is working on both the layers (ie., base and shift and number). Also, verified that the backspace and enter key are working as expected.
    • TEST_INAPP_LATIN_KEYBOARD_LANDSCAPE (PASSED): Verified that the long-press key is working on both the layers (ie., base and shift and number). Also, verified that the backspace and enter key are working as expected.
    • TEST_INAPP_LONG_PRESS (PASSED): Verified the Short Press key and Long Press key functionality in the OSK (EuroLatin SIL) are working as expected.
    • TEST_INAPP_NON_LATIN_KEYBOARD (PASSED): Verified that the non-latin script (eg., khmer) is visible and working in different layers.
    • TEST_INAPP_ROTATE_P-TO-L (PASSED): Verified that the OSK rotates properly (from Portrait to Landscape orientation)
    • TEST_INAPP_ROTATE_L-TO-P (PASSED): Verified that the OSK rotates properly (from Landscape to Portrait orientation)
    • TEST_SYSTEM_LATIN_KEYBOARD_PORTRAIT (PASSED): Verified that the long-press key is working on both the layers (ie., base and shift and number). Also, verified that the backspace and enter key are working as expected.
    • TEST_SYSTEM_LATIN_KEYBOARD_LANDSCAPE (PASSED): Verified that the long-press key is working on both the layers (ie., base and shift and number). Also, verified that the backspace and enter key are working as expected.
    • TEST_SYSTEM_LONG_PRESS (PASSED): Verified the Short Press key and Long Press key functionality in the OSK (EuroLatin SIL) are working as expected.
    • TEST_KEYBOARD_PICKER (PASSED): Verified that the Keyboard Picker menu which lists other system input methods at the bottom of the menu.
    • TEST_SYSTEM_ROTATE_P-TO-L (PASSED): Verified that the OSK rotates properly (from Portrait to Landscape orientation)
    • TEST_SYSTEM_ROTATE_L-TO-P (PASSED): Verified that the OSK rotates properly (from Landscape to Portrait orientation)
    • TEST_EXT_BLUETOOTH_KEYBOARD (PASSED): Tested with external keyboards like USB and Bluetooth connected devices and verified all the tests that have been mentioned in the test case (Test_Ext_Bluetooth_Keyboard).
    • TEST_EXT_AZERTY_KEYBOARD (PASSED): Tested with external European AZERTY keyboard paired to my mobile device. Verified that typing 'azerty' letters from an external keyboard produces the same letters in the keyman text input screen. Pressing 102nd key shows < symbol and pressing shift+102 key shows > symbol.
  • ✅ GROUP_ANDROID_9:

    14 tests PASSED
    • TEST_INAPP_LATIN_KEYBOARD_PORTRAIT (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, inthe portrait orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_INAPP_LATIN_KEYBOARD_LANDSCAPE (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, inthe landscape orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_INAPP_LONG_PRESS (PASSED): Verified that short press key and long press key functionality is working as expected. Also, verified that typing 'reply' word in the keyman app quickly, did not stuck the keyboard operations.
    • TEST_INAPP_NON_LATIN_KEYBOARD (PASSED): Verified that the Non-Latin script keyboard (eg., Khmer Angkor) is working as expected.
    • TEST_INAPP_ROTATE_P-TO-L (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Portrait to Landscape.
    • TEST_INAPP_ROTATE_L-TO-P (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Landscape to Portrait.
    • TEST_SYSTEM_LATIN_KEYBOARD_PORTRAIT (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, in the portrait orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_SYSTEM_LATIN_KEYBOARD_LANDSCAPE (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, in the landscape orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_SYSTEM_LONG_PRESS (PASSED): Verified that short press key and long press key functionality is working as expected. Also, verified that typing 'reply' word in the keyman app quickly, did not stuck the keyboard operations.
    • TEST_KEYBOARD_PICKER (PASSED): Verified that the Non-Latin script keyboard (eg., Khmer Angkor) is working as expected.
    • TEST_SYSTEM_ROTATE_P-TO-L (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Portrait to Landscape.
    • TEST_SYSTEM_ROTATE_L-TO-P (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Landscape to Portrait.
    • TEST_EXT_BLUETOOTH_KEYBOARD (PASSED): Retested with the attached PR build (17.0.98-alpha-test-8544) in my Android Mobile device along with external (USB) keyboard and it is working fine except the 'tab' key. Is this key is optional?
    • TEST_EXT_AZERTY_KEYBOARD (PASSED): Verified that the External Azerty (bluetooth) keyboard is working as expected. (notes)
  • ✅ GROUP_ANDROID_12:

    14 tests PASSED
    • TEST_INAPP_LATIN_KEYBOARD_PORTRAIT (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, in the portrait orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_INAPP_LATIN_KEYBOARD_LANDSCAPE (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, in the landscape orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_INAPP_LONG_PRESS (PASSED): Verified that short press key and long press key functionality is working as expected. Also, verified that typing 'reply' word in the keyman app quickly, did not stuck the keyboard operations.
    • TEST_INAPP_NON_LATIN_KEYBOARD (PASSED): Verified that the Non-Latin script keyboard (eg., Khmer Angkor) is working as expected.
    • TEST_INAPP_ROTATE_P-TO-L (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Portrait to Landscape.
    • TEST_INAPP_ROTATE_L-TO-P (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Landscape to Portrait.
    • TEST_SYSTEM_LATIN_KEYBOARD_PORTRAIT (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, in the portrait orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_SYSTEM_LATIN_KEYBOARD_LANDSCAPE (PASSED): Verified that the OSK is visible and fills the width the bottom of the screen, in the landscape orientation. Also, verified long pressing alphanumeric keys shows the expected output. Able to install Khmer Angkor keyboard via Settings menu.
    • TEST_SYSTEM_LONG_PRESS (PASSED): Verified that short press key and long press key functionality is working as expected. Also, verified that typing 'reply' word in the keyman app quickly, did not stuck the keyboard operations.
    • TEST_KEYBOARD_PICKER (PASSED): Verified that the Non-Latin script keyboard (eg., Khmer Angkor) is working as expected.
    • TEST_SYSTEM_ROTATE_P-TO-L (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Portrait to Landscape.
    • TEST_SYSTEM_ROTATE_L-TO-P (PASSED): Verified that the Keyboard orientation did not get affected after rotating it from Landscape to Portrait.
    • TEST_EXT_BLUETOOTH_KEYBOARD (PASSED): Retested with the attached PR build (17.0.98-alpha-test-8544) in my Android Mobile device along with external (USB) keyboard and it is working fine except the 'tab' key. Is this key is optional?
    • TEST_EXT_AZERTY_KEYBOARD (PASSED): Verified that the External Azerty (bluetooth) keyboard is working as expected.

✅ SUITE_ANDROID_KNOWN_BUGS: drawn from a list of bugs

15 tests in 3 groups PASSED
  • ✅ GROUP_ANDROID_5:

    5 tests PASSED
    • TEST_GLOBE_KEY (PASSED): Verified that holding backspace key did not trigger the longpresskey or any other key.
    • TEST_SUGGESTION_NO_CAPITAL (PASSED): After clearing the text, the banner shows the suggest words with capitalization.
    • TEST_BROKEN_SUGGESTION (PASSED): Retested and verified that the word "Prob" only appears on the text input screen. Seems to be working fine.
    • TEST_SHIFT_KEY_STUCK (PASSED): Verified that the Shift key dig not get stuck at any point.
    • TEST_REDUCED_TOAST_NOISE (PASSED): Verified that the Toast notifications are reduced and appeared for some of the functionalities. Seems to be working as expected.
  • ✅ GROUP_ANDROID_9:

    5 tests PASSED
    • TEST_GLOBE_KEY (PASSED): Verified that holding backspace key should not trigger a longpress on another random key.
    • TEST_SUGGESTION_NO_CAPITAL (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in Android 9.0 / API 28 emulator and here is my observation: 1. After clearing the text using Clear text option, the banner suggest words with capitalization. Seems to be working as expected.
    • TEST_BROKEN_SUGGESTION (PASSED): Retested and verified that the word "Prob" only appears on the text input screen. Seems to be working fine.
    • TEST_SHIFT_KEY_STUCK (PASSED): Pressing globe key, going back to home screen did not stuck the shift key. Seems to be working fine.
    • TEST_REDUCED_TOAST_NOISE (PASSED): Verified that the number of Toast notifications are reduced as per the instructions.
  • ✅ GROUP_ANDROID_12:

    5 tests PASSED
    • TEST_GLOBE_KEY (PASSED): Verified that holding backspace key should not trigger a longpress on another random key.
    • TEST_SUGGESTION_NO_CAPITAL (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in Android 12.0 / API 31 emulator and here is my observation: 1. After clearing the text using Clear text option, the banner suggest words with capitalization. Seems to be working as expected.
    • TEST_BROKEN_SUGGESTION (PASSED): Retested and verified that the word "Prob" only appears on the text input screen. Seems to be working fine.
    • TEST_SHIFT_KEY_STUCK (PASSED): Pressing globe key, going back to home screen did not stuck the shift key. Seems to be working fine.
    • TEST_REDUCED_TOAST_NOISE (PASSED): Verified that the number of Toast notifications are reduced as per the instructions.

🟧 SUITE_IOS_MENU_FUNCTIONALITY: Menu Functionality Tests, in-app##

  • ✅ GROUP_IPHONE_PORTRAIT: portrait mode in iPhone

    10 tests PASSED
    • TEST_GET_STARTED (PASSED): Tested with the attached build (17.0.86-alpha-test-8544) in iOS 16.4 / iPhone 14 Pro Max emulator and here is my observations: Verified that the three options 'Add a keyboard for your language', 'Enable Keyman as system-wide keyboard' and 'More Info' are working as expected. Also, Don't show again option is also working correctly.
    • TEST_ADD_NEW_KEYBOARD (PASSED): Verified that we are able to add a new keyboard (US Basic) via Get Started menu.
    • TEST_ADD_NEW_KEYBOARD_FROM_FILE (PASSED): Verified that we are able to download and install the basic_kbdus.kmp file in Keyman app and it is showing correctly on the application.
    • TEST_SWITCH_KEYBOARD (PASSED): Verified that we are able to switch keyboards using globe key.
    • TEST_TEXT_SIZE (PASSED): Verified that the text size can be rescaled from Text size 9 to 72.
    • TEST_CLEAR_TEXT (PASSED): Verified that text can be cleared successfully.
    • TEST_INFO (PASSED): Verified that the iOS Version is displayed in the Help topic. (notes)
    • TEST_SETTINGS (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in iOS 16.2 / iPhone 14 Pro Max Simulator and here is my observation: 1. After removed the English Dictionary (MTNT) file, there is no suggestion banner appear with the Keyboard. 2. After disabling Predictions / Corrections option, the suggestion banner disappears from the Keyboard. Seems to be working as expected.
    • TEST_EUROLATIN (PASSED): Verified that the Eurolatin (SIL) keyboard is working as expected.
    • TEST_US_BASIC (PASSED): The English: US Basic and Tagalog:US Basic keyboards are working as expected.
  • ✅ GROUP_IPHONE_LANDSCAPE: landscape mode in iPhone

    10 tests PASSED
    • TEST_GET_STARTED (PASSED): Tested with the attached build (17.0.86-alpha-test-8544) in iOS 16.4 / iPhone 14 Pro Max emulator and here is my observations: Verified that the three options 'Add a keyboard for your language', 'Enable Keyman as system-wide keyboard' and 'More Info' are working as expected. Also, Don't show again option is also working correctly.
    • TEST_ADD_NEW_KEYBOARD (PASSED): Verified that we are able to add a new keyboard (US Basic) via Get Started menu.
    • TEST_ADD_NEW_KEYBOARD_FROM_FILE (PASSED): Verified that we are able to download and install the basic_kbdus.kmp file in Keyman app and it is showing correctly on the application.
    • TEST_SWITCH_KEYBOARD (PASSED): Verified that we are able to switch keyboards using globe key.
    • TEST_TEXT_SIZE (PASSED): Verified that the text size can be re-scaled from Text size 9 to 72.
    • TEST_CLEAR_TEXT (PASSED): Verified that text can be cleared successfully.
    • TEST_INFO (PASSED): Verified that the iOS Version is displayed in the Help topic.
    • TEST_SETTINGS (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in iOS 16.2 / iPhone 14 Pro Max Simulator and it is working as expected.
    • TEST_EUROLATIN (PASSED): Verified that the Eurolatin (SIL) keyboard is working as expected.
    • TEST_US_BASIC (PASSED): The English: US Basic and Tagalog:US Basic keyboards are working as expected.
  • 🟧 GROUP_IPAD_PORTRAIT: portrait mode in iPad

    • TEST_GET_STARTED (PASSED): Tested with the attached build (17.0.86-alpha-test-8544) in iOS 15.0 / iPad (9th generation) emulator and here is my observations: Verified that the three options 'Add a keyboard for your language', 'Enable Keyman as system-wide keyboard' and 'More Info' are working as expected. Also, Don't show again option is also working correctly.
    • TEST_ADD_NEW_KEYBOARD (PASSED): Verified that we are able to add a new keyboard (US Basic) via Get Started menu.
    • TEST_ADD_NEW_KEYBOARD_FROM_FILE (PASSED): Verified that we are able to download and install the basic_kbdus.kmp file in Keyman app and it is showing correctly on the application.
    • TEST_SWITCH_KEYBOARD (PASSED): Verified that we are able to switch keyboards using globe key.
    • TEST_TEXT_SIZE (PASSED): Verified that the text size can be rescaled from Text size 9 to 72.
    • TEST_CLEAR_TEXT (PASSED): Verified that text can be cleared successfully.
    • TEST_INFO (PASSED): Verified that the iOS Version is displayed in the Help topic.
    • TEST_SETTINGS (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in iOS 16.2 / iPad (10th generation ) Simulator and it is working as expected.
    • TEST_EUROLATIN (PASSED): Verified that the Eurolatin (SIL) keyboard is working as expected.
    • 🟧 TEST_US_BASIC (BLOCKED): 123 or Num key is not available in the English : US Basic and Tagalog : US Basic keyboard. Seems to be blocked for further testing. (notes)
  • 🟧 GROUP_IPAD_LANDSCAPE: landscape mode in iPad

    • TEST_GET_STARTED (PASSED): Tested with the attached build (17.0.86-alpha-test-8544) in iOS 15.0 / iPad(9th generation) and here is my observations: Verified that the three options 'Add a keyboard for your language', 'Enable Keyman as system-wide keyboard' and 'More Info' are working as expected. Also, Don't show again option is also working correctly.
    • TEST_ADD_NEW_KEYBOARD (PASSED): Verified that we are able to add a new keyboard (US Basic) via Get Started menu.
    • TEST_ADD_NEW_KEYBOARD_FROM_FILE (PASSED): Verified that we are able to download and install the basic_kbdus.kmp file in Keyman app and it is showing correctly on the application.
    • TEST_SWITCH_KEYBOARD (PASSED): Verified that we are able to switch keyboards using globe key.
    • TEST_TEXT_SIZE (PASSED): Verified that the text size can be re-scaled from Text size 9 to 72.
    • TEST_CLEAR_TEXT (PASSED): Verified that text can be cleared successfully.
    • TEST_INFO (PASSED): Verified that the iOS Version is displayed in the Help topic.
    • TEST_SETTINGS (PASSED): Retested with the updated Keyman build (17.0.98-alpha-test-8544) in iOS 16.2 / iPad (10th generation) Simulator and it is working as expected.
    • TEST_EUROLATIN (PASSED): Verified that the Eurolatin (SIL) keyboard is working as expected.
    • 🟧 TEST_US_BASIC (BLOCKED): 123 or Num key is not available in the English : US Basic and Tagalog : US Basic keyboard. Seems to be blocked for further testing.

✅ SUITE_IOS_SYSTEM_KEYBOARD:

12 tests in 4 groups PASSED
  • ✅ GROUP_IPHONE_PORTRAIT: portrait mode in iPhone

    3 tests PASSED
    • TEST_BASIC_USAGE (PASSED): Retested with the updated build (17.0.98-alpha-test-8544) in iOS 16.2 / iPhone 14 Pro Max simulator and here is my observation: Installed 3 different keyboards and tested it in Safari browser and it is working as expected.
    • TEST_LONG_PRESS (PASSED): Long pressing (sil_euro_latin or khmer_angkor) keyboards outputs the subkey menus on the browser. Seems to be working as expected.
    • TEST_GLOBE_KEY (PASSED): Short press (in the Keyman In-App) and Long press keys (Keyman as the System Keyborad) are working fine.
  • ✅ GROUP_IPHONE_LANDSCAPE: landscape mode in iPhone

    3 tests PASSED
    • TEST_BASIC_USAGE (PASSED): Retested with the updated build (17.0.98-alpha-test-8544) in iOS 16.2 / iPhone 14 Pro Max simulator and here is my observation: Installed 3 different keyboards and tested it in Safari browser and it is working as expected.
    • TEST_LONG_PRESS (PASSED): Long pressing (sil_euro_latin or khmer_angkor) keyboards outputs the subkey menus on the browser. Seems to be working as expected.
    • TEST_GLOBE_KEY (PASSED): Short press (in the Keyman In-App) and Long press keys (Keyman as the System Keyborad) are working fine.
  • ✅ GROUP_IPAD_PORTRAIT: portrait mode in iPad

    3 tests PASSED
    • TEST_BASIC_USAGE (PASSED): Retested with the updated build (17.0.98-alpha-test-8544) in iOS 16.2 / iPad (10th generation) simulator and here is my observation: Installed 3 different keyboards and tested it in Safari browser and it is working as expected.
    • TEST_LONG_PRESS (PASSED)
    • TEST_GLOBE_KEY (PASSED): Short press (in the Keyman In-App) and Long press keys (Keyman as the System Keyborad) are working fine.
  • ✅ GROUP_IPAD_LANDSCAPE: landscape mode in iPad

    3 tests PASSED
    • TEST_BASIC_USAGE (PASSED): Retested with the updated build (17.0.98-alpha-test-8544) in iOS 16.2 / iPad (10th generation) simulator and here is my observation: Installed 3 different keyboards and tested it in Safari browser and it is working as expected.
    • TEST_LONG_PRESS (PASSED)
    • TEST_GLOBE_KEY (PASSED): Short press (in the Keyman In-App) and Long press keys (Keyman as the System Keyborad) are working fine.
Retesting Template
@keymanapp-test-bot retest SUITE_ANDROID_MENU_FUNCTIONALITY GROUP_ANDROID_5 TEST_KEYMAN_SETTTINGS SUITE_IOS_MENU_FUNCTIONALITY GROUP_IPAD_PORTRAIT TEST_US_BASIC GROUP_IPAD_LANDSCAPE TEST_US_BASIC

Test Artifacts

@jahorton
Copy link
Contributor Author

Re: the iOS build failure:

[08:21:09 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2535&logView=flowAware&linesState=2535)
  Copying Keyman Engine samples into upload/17.0.67/keyman-engine-ios-17.0.67.zip...

[08:21:09 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2536&logView=flowAware&linesState=2536)
  Copying Keyman IPA build/Build/Products/Release-iphoneos/Keyman.ipa => upload/17.0.67/keyman-ios-17.0.67.ipa...

[08:21:09 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2537&logView=flowAware&linesState=2537)
  Zipping Keyman simulator artifact build/Build/Products/Release-iphonesimulator/Keyman.app => upload/17.0.67/keyman-ios-simulator-17.0.67.app.zip...

[08:21:09 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2538&logView=flowAware&linesState=2538)
  /Users/mcdurdin/buildAgent/work/99b311828f4ee7c/keyman/ios/upload/17.0.67/keyman-ios-simulator-17.0.67.app.zip

[08:21:09 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2539&logView=flowAware&linesState=2539)
  Copying FirstVoices IPA ../oem/firstvoices/ios/build/Build/Products/Release-iphoneos/FirstVoices.ipa => upload/17.0.67/firstvoices-ios-17.0.67.ipa...

[08:21:09 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2540&logView=flowAware&linesState=2540)
  Zipping FirstVoices simulator artifact ../oem/firstvoices/ios/build/Build/Products/Release-iphonesimulator//FirstVoices.app => upload/17.0.67/keyman-ios-simulator-17.0.67.app.zip...

[08:21:10 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2541&logView=flowAware&linesState=2541)
  stat: invalid option -- '%'

[08:21:10 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2542&logView=flowAware&linesState=2542)
  Try 'stat --help' for more information.

[08:21:10 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2543&logView=flowAware&linesState=2543)
  Process exited with code 1

[08:21:11 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2545&logView=flowAware&linesState=2545)
  Process exited with code 1 (Step: Use prep-release script to capture build artifacts (Command Line))

[08:21:11 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2546&logView=flowAware&linesState=2546)
  Step Use prep-release script to capture build artifacts (Command Line) failed

[08:21:11 ](https://build.palaso.org/buildConfiguration/Keyman_iOS_TestPullRequests/375628?buildTab=log&focusLine=2548&logView=flowAware&linesState=2548)
Step 6/6: Upload to TestFlight (PR area) (Command Line)

Looks like recent updates to the build agents caused the artifact upload to fall over? At least the build completed fine up 'til then.

@@ -16,13 +16,13 @@
-->
<script src="es6-shim.min.js"></script>
<script src="keymanandroid.js"></script>
<script src="sentry.min.js"></script>
<script src="keyman-sentry.js"></script>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we needing to include both sentry.min.js and keyman-sentry.js?

I thought keyman-sentry.js was just the renamed component

Copy link
Contributor Author

@jahorton jahorton Mar 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • In converting our Sentry-integration setup to modular form... well... turns out we can't quite directly import the Sentry libraries and directly integrate with them.
    • esbuild falls over due to unsupported code transformation rules when targeting ES5, which we do b/c of our Android 5.0 support (and possibly other environments, too)
    • We need to import KEYMAN_VERSION stuff, which is now modularized, so... we'll either have to prepend bundled Sentry or include it in the asset bundles directly.
    • I opted for the latter and have made the necessary changes for both mobile apps.

All of that to say... yes, we need to include both. The TS build system doesn't support prepending sentry.min.js on the module-based form of keyman-sentry.js. Prepending was "easy" with the namespaced TS format, but that only works for builds that output to a single file - something that modular builds don't support without additional tooling (like a later esbuild step).

If we prefer, I can gerry-rig something like I already did with the lm-worker build to prepend it and do sourcemapping on the resulting setup. But, since we're only using it within the mobile apps anyway, and it's not needed within the WebWorker, I didn't think it worth the extra hassle.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is the appropriate answer -- there's no need to concatenate these files since they are used only within Keyman Engine for Android and Keyman Engine for iOS.

@jahorton
Copy link
Contributor Author

jahorton commented May 15, 2023

Test Results

SUITE_ANDROID_MENU_FUNCTIONALITY: Menu Functionality Tests

GROUP_ANDROID_5:

  • TEST_KEYMAN_SETTTINGS (FAILED): notes below

It looks like the a fix has been made. I've retested this and here is what I see. Something interesting at 0:13s, 1:15s and 1:21s.

Screen.Recording.2023-05-12.at.3.29.40.PM.-.480p.mov

Pretty sure that's a separate issue entirely, though I can't quite find a perfect matching issue in our issue list.

Edit: I have opened issue #8798 to track this.

@jahorton
Copy link
Contributor Author

jahorton commented May 15, 2023

Test (Keyman - Developer) build failure:

[web] ./build.sh: invalid parameter: --no-minify

Yep, that's pretty reasonable at this point. I haven't taken steps yet to reintegrate KMW with Developer. Getting the app/browser mode up and running takes priority - after all, app/browser is the KMW build-product that Developer is seeking for that part of its build process.

@jahorton jahorton merged commit 5060b32 into feature-esmodule-web-engine May 15, 2023
12 of 15 checks passed
@jahorton jahorton deleted the fix/web/webview-android-launch branch May 15, 2023 06:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

None yet

5 participants