From d0ea16b975d439a282e1699f475999e21617b186 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Tue, 21 Oct 2025 13:49:37 +0700 Subject: [PATCH 1/5] chore(web): Move chirality.js to common/test/resources/keyboards/ --- .../chirality => common/test/resources/keyboards}/chirality.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {web/src/test/manual/web/chirality => common/test/resources/keyboards}/chirality.js (100%) diff --git a/web/src/test/manual/web/chirality/chirality.js b/common/test/resources/keyboards/chirality.js similarity index 100% rename from web/src/test/manual/web/chirality/chirality.js rename to common/test/resources/keyboards/chirality.js From 4bff2c81d5b20f18cddcb415463bbd4bbc0cf0ff Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 22 Oct 2025 06:53:29 +0700 Subject: [PATCH 2/5] chore(web): Update web test page reference to chirality.js --- web/src/test/manual/web/chirality/utilities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/test/manual/web/chirality/utilities.js b/web/src/test/manual/web/chirality/utilities.js index 158a05c08e..d9226497f4 100644 --- a/web/src/test/manual/web/chirality/utilities.js +++ b/web/src/test/manual/web/chirality/utilities.js @@ -7,7 +7,7 @@ function loadKeyboards() languages:{ id:'en',name:'English',region:'North America' }, - filename:'chirality.js' + filename:'../../../../../../common/test/resources/keyboards/chirality.js' }); // A testing keyboard using 10.0 format and the KLS layout specifier From 5fa0dccbcb1a8f993509425961ea58c0989d752c Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 22 Oct 2025 06:54:01 +0700 Subject: [PATCH 3/5] chore(android): Update keyboard harness reference to chirality.js --- .../app/src/main/assets/keyboardharness.kmp | Bin 217993 -> 217932 bytes .../app/src/main/assets/keyboardharness.kpj | 50 ++---------------- .../app/src/main/assets/keyboardharness.kps | 2 +- 3 files changed, 4 insertions(+), 48 deletions(-) diff --git a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kmp b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kmp index f0380aabe531900823d6b362015da82ca8c0978a..9785ed733811c1938d1125c34725a47b5bd2897a 100644 GIT binary patch delta 3421 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 F{R8I3H2nYo delta 3467 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 E0B!I}X#fBK diff --git a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kpj b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kpj index c7fa5c530c..80a3e1568a 100644 --- a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kpj +++ b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kpj @@ -1,56 +1,12 @@ + 2.0 $PROJECTPATH + $PROJECTPATH\ True - True True + True lexicalmodel - - - id_165fd1598b940efe4a973aeb6eb61aba - keyboardharness.kps - keyboardharness.kps - 1.0 - .kps -
- keyboardharness - ©2020 SIL International - 1.0 -
-
- - id_f9b1213d4e83cb32ce1ead1ee852d618 - chirality.js - ..\..\..\..\..\..\..\web\testing\chirality\chirality.js - - .js - id_165fd1598b940efe4a973aeb6eb61aba - - - id_e01841691fa129428aea555142873f69 - platformtest.js - ..\..\..\..\..\..\..\web\testing\platform\platformtest.js - - .js - id_165fd1598b940efe4a973aeb6eb61aba - - - id_03df89bb84a1aa6cab40dfebf3a04c5b - code2001.ttf - code2001.ttf - - .ttf - id_165fd1598b940efe4a973aeb6eb61aba - - - id_2d07bd2b8c94e9600ac1a920c8cb9e0a - longpress.js - longpress.js - - .js - id_165fd1598b940efe4a973aeb6eb61aba - -
diff --git a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kps b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kps index 157aefd71c..9d03ec759b 100644 --- a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kps +++ b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kps @@ -20,7 +20,7 @@ - ..\..\..\..\..\..\..\web\src\test\manual\web\chirality\chirality.js + ../../../../../../../common/test/resources/keyboards/chirality.js File chirality.js 0 .js From 616092e0f7ba2674bebcfdd0dc106ce53febf586 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 24 Oct 2025 09:08:31 +0700 Subject: [PATCH 4/5] fix(web): Copy common keyboards to test-resources --- web/build/test-resources/keyboards/.gitkeep | 0 web/src/test/manual/build.sh | 3 +++ web/src/test/manual/web/chirality/utilities.js | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 web/build/test-resources/keyboards/.gitkeep diff --git a/web/build/test-resources/keyboards/.gitkeep b/web/build/test-resources/keyboards/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/web/src/test/manual/build.sh b/web/src/test/manual/build.sh index b2eed53d0a..be3dcbc869 100755 --- a/web/src/test/manual/build.sh +++ b/web/src/test/manual/build.sh @@ -49,6 +49,9 @@ function do_copy() { mkdir -p "$GESTURE_PROCESSOR_TARGET" cp -a "$GESTURE_PROCESSOR_BUILD" "$GESTURE_PROCESSOR_TARGET" + + # copy common test resources (keyboards) + cp -f "$KEYMAN_ROOT/common/test/resources/keyboards/"*.js "$KEYMAN_ROOT/$DEST/keyboards/" } builder_run_action clean rm -rf "$KEYMAN_ROOT/$DEST" && rm -rf "$GESTURE_PROCESSOR_TARGET" diff --git a/web/src/test/manual/web/chirality/utilities.js b/web/src/test/manual/web/chirality/utilities.js index d9226497f4..16c9caaf02 100644 --- a/web/src/test/manual/web/chirality/utilities.js +++ b/web/src/test/manual/web/chirality/utilities.js @@ -7,7 +7,7 @@ function loadKeyboards() languages:{ id:'en',name:'English',region:'North America' }, - filename:'../../../../../../common/test/resources/keyboards/chirality.js' + filename:'../../../../../build/test-resources/keyboards/chirality.js' }); // A testing keyboard using 10.0 format and the KLS layout specifier From 00b6c71eb4522f33e6bc3b74d69a5cb1efdb7dc9 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 24 Oct 2025 10:09:46 +0700 Subject: [PATCH 5/5] fix(web): Create test-resources/keyboards dir --- web/build/test-resources/keyboards/.gitkeep | 0 web/src/test/manual/build.sh | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 web/build/test-resources/keyboards/.gitkeep diff --git a/web/build/test-resources/keyboards/.gitkeep b/web/build/test-resources/keyboards/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/web/src/test/manual/build.sh b/web/src/test/manual/build.sh index be3dcbc869..53a784bdf8 100755 --- a/web/src/test/manual/build.sh +++ b/web/src/test/manual/build.sh @@ -41,7 +41,7 @@ GESTURE_PROCESSOR_BUILD="$KEYMAN_ROOT/web/src/engine/osk/gesture-processor/build GESTURE_PROCESSOR_TARGET="$KEYMAN_ROOT/web/build/engine/gesture-processor/lib/" function do_copy() { - mkdir -p "$KEYMAN_ROOT/$DEST" + mkdir -p "$KEYMAN_ROOT/$DEST/keyboards" # The next four lines are needed for the sentry-integration manual test page. cp "$SENTRY_MANAGER_SRC" "$KEYMAN_ROOT/$DEST/sentry-manager.js"