Closed jahorton closed 2 years ago
✅ GROUP_IOS_APP: iOS / Keyman app
✅ GROUP_ANDROID_APP: Android / System keyboard
✅ GROUP_WIN: Windows / Firefox (or Chrome, but just one)
✅ GROUP_ANDROID_DOM: Android / Chrome
✅ GROUP_IOS_DOM: iOS (via Simulator) / Safari
Can probably reformat TEST_SPECIFIC_KEYBOARDS: so GitHub doesn't link the issue/pull request for #1
and #2
.
GROUP_IOS_APP: iOS / Keyman app
GROUP_ANDROID_APP: Android / System keyboard
Note that this error occurs only 5.0.2 right after setting Keyman as system keyboard and default input method.
On Android 5.0.2, 6.0, 8.1, 10 and 11, there is a fatal error when typing a longpress key on any layer. After that nothing is output from any longpresses, however the normal keys on any layers are working fine after the crash.
Also, there is one weird error which shows up briefly when loading Keyman app in horisontal mode in Android 8.1. It says, "Error in keyboard nul:nul for language".
GROUP_WIN: iOS / Keyman app
Create Inputs
button. This case is marked as BLOCKED for now. Kindly guide me through if the steps taken were not expected/intended.GROUP_ANDROID_DOM: Android / Chrome
(I assumed that "new page element" refers to the input area which appears after clicking on the "Create Inputs". If this assumption is wrong, please kindly guide me through as it is detrimental to this test suite.)
GROUP_IOS_DOM: iOS / Safari
It looks like the keyboard doesn't load correctly. The keyboard renders unusable. Probably because of my limited knowledge of how to use Safari emulator. This suite is now marked as BLOCKED.
GROUP_MAC: macOS / Firefox
I blindly assume that "input control" and "textarea control" are the input area on the standard "Test unminified KeymanWeb" page. With that said, the test PASSED. Please guide me if I went off course here.
Verify that a CJK keyboard is shown and hidden properly without interfering with a page's UX.
- Select the page's textarea element. The OSK's title bar should appear (as with step 2 for the
_TYPING
test).- Click a blank area on the page. The OSK should automatically hide and the caret should disappear from the textarea.
- Just in case, "caret": the blinking vertical line segment that lets you know where new characters will appear in the context.
- Select the page's input field (the second editable control). The OSK should reappear under the newly-selected control.
- Select the page's textarea element again. The OSK should remain visible, and the caret should move from the input control to the textarea control.
@keymanapp/testers
The instructions provided are not applicable for this pair, as Keyman app does not have the Create Inputs button. This case is marked as BLOCKED for now. Kindly guide me through if the steps taken were not expected/intended.
They are applicable for these pairs - you're just referring to the wrong part of the instructions. The DOM
tests explicitly say to use the test pages, outside of the apps. Just like you did for the Android one that's part of the same test suite.
@keymanapp/testers
The instructions provided are not applicable for this pair, as Keyman app does not have the Create Inputs button. This case is marked as BLOCKED for now. Kindly guide me through if the steps taken were not expected/intended.
They are applicable for these pairs - you're just referring to the wrong part of the instructions. The
DOM
tests explicitly say to use the test pages, outside of the apps. Just like you did for the Android one that's part of the same test suite.
Please specify the browser necessary for this test. Should it be in Chrome or FireFox on Windows?
Oh, I stand corrected for GROUP_WIN. CTRL+C / CTRL+V strikes again; I should have edited that.
I've now changed GROUP_WIN
to actually specify Windows things, and the IOS
one to specify using iOS Simulator's Safari. You should be able to visit the test pages through Simulator, though this may require logging into TeamCity within the Simulator instance.
GROUP_WIN: Windows / Firefox (or Chrome, but just one)
GROUP_ANDROID_DOM: Android / Chrome
GROUP_IOS_DOM: iOS (via Simulator) / Safari
The keyboard flickered, yet didn't bring up the keyboard menu when trying to switch from Dzongkha to French keyboard. One has to click on it again to see the keyboard menu.
The last step does not switch the keyboard to Lao. The keyboard stays in French.
On Android 5.0.2, 6.0, 8.1, 10 and 11, there is a fatal error when typing a longpress key on any layer. After that nothing is output from any longpresses, however the normal keys on any layers are working fine after the crash.
Good catch there - it also would have affected hardware keystrokes, actually. Missed a few spots when changing how the last active element is retrieved.
The mobile-device bugs (aside from spacebar captions) should now be ready for a retest. I'm also going to add notes for the on-device Safari testing: Safari likes to interfere with language-menu access a bit, as the same location on the screen will display its nav bar.
Spacebar captions are handled separately in #5688.
Resetting some of the tests:
SUITE_IN_APP GROUP_ANDROID_APP
TEST_NORMAL_LOAD OPEN retest
SUITE_DOM OPEN retest
Okay, so we can't do a full suite that way.
SUITE_DOM
GROUP_ANDROID_DOM OPEN retest GROUP_IOS_DOM OPEN retest
... which doesn't work yet either.
Well, in that case...
SUITE_DOM
GROUP_WIN
TEST_NORMAL_USE OPEN retest TEST_ELEMENT_HOPPING OPEN retest TEST_SPECIFIC_KEYBOARDS OPEN retest
GROUP_ANDROID_DOM
TEST_NORMAL_USE OPEN retest TEST_ELEMENT_HOPPING OPEN retest TEST_SPECIFIC_KEYBOARDS OPEN retest
GROUP_IOS_DOM
TEST_NORMAL_USE OPEN retest TEST_ELEMENT_HOPPING OPEN retest TEST_SPECIFIC_KEYBOARDS OPEN retest
GROUP_ANDROID_APP: Android / System keyboard
Note that the error doesn't occur again on the next attempt.
There is also a Fatal Error when typing longpress on the default layer in horizontal mode in Android 8.1. After this error, no longpress outputs anything. Normal press works just fine though.
* **TEST_ROTATE_L-TO-P: FAILED** Fatal Error in the first attempt to load the keyboard in landscape mode on Android 6.0. <img alt="" width="70" src="https://user-images.githubusercontent.com/28331388/133953357-21b144ea-ddb5-49ff-8167-53fbb3f566df.png"> _Note that the error doesn't occur again on the next attempt._ There is also a Fatal Error when typing longpress on the default layer in horizontal mode in Android 8.1. After this error, no longpress outputs anything. Normal press works just fine though.
I loaded up an emulator with both versions and could reproduce neither issue mentioned here.
GROUP_WIN: Windows / Firefox
GROUP_ANDROID_DOM: Android / Chrome
Also, after typing a character and then click on the blank area to hide the OSK, the OSK wouldn't be back up when clicking back in the input area.
GROUP_IOS_DOM: iOS (via Simulator) / Safari
OK, so that last failed user test opened a minor can of worms. There was a "fun" conflict between the focus timer and Android-specific page-scroll handling that simply wasn't ever resolved properly. I think I've figured out how to make the two aspects cooperate, though this did require a few more changes than I'd like. The previous two commits (which accomplished this) may be worth their own review.
As may be noted, I did take the opportunity this provided as an excuse to polish up this area dramatically, removing the old ugly (<any>this.keyman)
blocks by providing "proper" definitions where they were previously missing. All changed field and method names were always file- and class-internal, despite where they were being stored. (Things would have been much messier due to the fixes had I not done this.)
@keymanapp-test-bot retest SUITE_DOM TEST_NORMAL_USE
@mcdurdin Looks like that path wasn't quite covered right:
Only the first group's test was reset.
So...
@keymanapp-test-bot retest SUITE_DOM GROUP_ANDROID_DOM TEST_NORMAL_USE @keymanapp-test-bot retest SUITE_DOM GROUP_IOS_DOM TEST_NORMAL_USE
Okay then...
SUITE_DOM GROUP_ANDROID_DOM TEST_NORMAL_USE OPEN retest
SUITE_DOM GROUP_IOS_DOM TEST_NORMAL_USE OPEN retest
... maybe it needs an extra comment for this type?
SUITE_DOM GROUP_ANDROID_DOM TEST_NORMAL_USE OPEN retest
SUITE_DOM GROUP_IOS_DOM TEST_NORMAL_USE OPEN retest
Edit: there we go. Finally.
GROUP_ANDROID_DOM: Android / Chrome
GROUP_IOS_DOM: iOS (via Simulator) / Safari
inputs
and empty area
. When testing on the emulator, the mouse click may be faster than the reality of when using the actual device. Consequently, the OSK may not behave as intended, unless waiting for a second or so before touching to show or hide it.
The behavior on web in Windows and macOS is more robust when it comes to show and hide the OSK.
@jahorton you are pushing that poor little test bot too hard. Currently:
So, I expect you could do:
@--keymanapp-test-bot retest SUITE_DOM GROUP_ANDROID_DOM TEST_NORMAL_USE SUITE_DOM GROUP_IOS_DOM TEST_NORMAL_USE
(identifier deliberately mangled to prevent interference.)
Both of these issues should be resolved but as there is a way forward I'll just encourage you to use the recognised incantation for now -- no time this week...
- unless waiting for a second or so
I've also noted these performance issues. See #5729, #5731 for potential mitigations.
The previous two commits (which accomplished this) may be worth their own review.
Okay, re-reviewing. I've got a few things in my queue so hopefully will get to that this morning.
When testing on the emulator, the mouse click may be faster than the reality of when using the actual device. Consequently, the OSK may not behave as intended, unless waiting for a second or so before touching to show or hide it. The behavior on web in Windows and macOS is more robust when it comes to show and hide the OSK.
Actually, he's referring to something else here:
When testing touch-device element attachment, KMW uses this timer to prevent de-focusing selected elements too quickly. I believe that it's been there since before we went open-source.
My best guess is that it's there to prevent fat-fingering effects from deselecting an element when the touchpoint is lifted, should the off-element part lift after the on-element part... but this is admittedly conjecture and inference on my part. The block above (and the second comment line) includes fixes to use of this timer, based on said guess.
I agree with @MakaraSok that the timer's probably a bit too long, but I didn't want to make that call in this PR.
SUITE_IN_APP GROUP_ANDROID_APP TEST_ROTATE_L-TO-P OPEN retest
GROUP_ANDROID_APP: Android / System keyboard
TEST_ROTATE_L-TO-P: FAILED
5.0
6.0
The loading animation is not as smooth as one would expect it to be. You can see the transition in action while waiting for things to settle.
6.0
Looks like that bug was addressed on master
by https://github.com/keymanapp/keyman/pull/5724. It fits the bill near-perfectly, too.
@keymanapp-test-bot retest SUITE_IN_APP GROUP_ANDROID_APP TEST_ROTATE_L-TO-P retest
Changes in this pull request will be available for download in Keyman version 15.0.118-alpha
Addresses aspects of #5026.
Follows #5633.
Fixes #5026. (Finally!) This PR finally centralizes management of KMW's active element logic and fixes a few niche scenarios that went relatively undetected until now.
One of the worst aspects of "spaghetti code" in relation to the OSK is how entangled some of its display aspects have been with the web engine's active-element management. While this PR doesn't get everything cleaned up perfectly for active-element tracking, its biggest success is that all logic where the two subsystems intersect has now been centralized within the setters of two properties.
While not actually refactoring OSK code in this PR, it's prep work necessary to continue along the lines of the other ✂️ PRs.
User Testing
SUITE_IN_APP: Host app tests.
All behavior exhibited here should feel "normal". These tests are solely to ensure that nothing got accidentally broken.
Platform / keyboard mode combinations
Suite tests
TEST_NORMAL_LOAD: Ensure that the keyboard displays and works correctly when first loaded up.
Be sure to test one or two keystrokes; ensure that the key produces the expected output.
TEST_ROTATE_P-TO-L:
TEST_ROTATE_L-TO-P:
SUITE_DOM: Site-based tests.
All behavior exhibited here should feel "normal". These tests are solely to ensure that nothing got accidentally broken.
OS / Browser combinations
For each of these, make use of the "Tests the new Attachment/Enablement API functionality" test page.
Suite tests
TEST_NORMAL_USE: Ensure that the keyboard displays and works correctly when first loaded up.
TEST_ELEMENT_HOPPING:
TEST_SPECIFIC_KEYBOARDS:
Dynamic area #0.
Dynamic area #1
's "Set to Dzongkha button.Dynamic area #1
. The Dzongkha keyboard should be displayed.Dynamic area #2
.Dynamic area #0.
The French keyboard should be displayed.Dynamic area #2.
The Lao keyboard should be displayed.Dynamic area #1.
The Dzongkha keyboard should be displayed.Dynamic area #0
's "Clear Keyboard" button.Dynamic area #0.
The Lao keyboard should be displayed.SUITE_CJK: Tests CJK keyboard functionality
OS / Browser combinations
Use the standard "Test unminified KeymanWeb" page.
Suite tests
TEST_JAPANESE_TYPING: Verify that a CJK keyboard still works.
Test sequence
1. Under "Add a keyboard by keyboard name", type `japanese`, then click Add. 2. Select the Japanese keyboard. The OSK should change shape notably: 3. Type `a`. A "picker" displaying a few options should display: 4. Type `2`. The second option should replace the context.TEST_JAPANESE_FOCUS: Verify that a CJK keyboard is shown and hidden properly without interfering with a page's UX.
_TYPING
test).So, fun fact... the
TEST_JAPANESE_FOCUS
test above actually fixes an issue that currently exists both onmaster
and onstable_14.0
that had gone unnoticed until this PR's development.