Commit graph

259 commits

Author SHA1 Message Date
Marc Durdin
a00cc95cf6 chore: Merge branch 'epic/web-core' into auto/B19S2-merge-base-into-web-core 2026-09-25 15:15:14 +02:00
Eberhard Beilharz
05be47793c
chore(common): fix TC reporter reporting failures
The TC reporter failed reporting failures (see e.g.
https://build.palaso.org/buildConfiguration/Keymanweb_TestPullRequests/646398?logView=flowAware&showLog=646398_11692__expandAll)
Turns out we double escaped some strings, and there were a spurious bracket
and single quote in the service message.

Build-bot: skip build:web
Test-bot: skip
2026-09-23 21:43:07 +02:00
Marc Durdin
f3f423c166 fix(common): update ldml basic-19.txt and test for corrected minDeviceWidth
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
From the fixups done in #16501 so that `minDeviceWidth` matches spec.

See-also: #16501
Test-bot: skip
2026-09-16 12:15:13 +02:00
Marc Durdin
7ba8aeac73 chore: Merge branch 'epic/web-core' into auto/B19S1-merge-base-into-web-core 2026-09-12 07:29:25 +02:00
Marc Durdin
a8a1dee6e3 chore: Merge 'epic/web-core' into auto/A19S36-merge-base-into-web-core 2026-08-30 07:05:10 +02:00
Eberhard Beilharz
0f16f39e17
chore: Merge branch 'epic/web-core' into auto/A19S33-merge-master-into-web-core 2026-07-20 09:57:23 +02:00
Keyman Server
c2a3fd8d7d
Merge branch 'epic/autocorrect' into auto/A19S33-merge-master-into-autocorrect 2026-07-20 07:26:08 +02:00
Marc Durdin
cb8f9584cf fix(android): improve clarity of keyboard script error popup
* Remove irrelevant context from toast and add more context for Sentry
  report.
* Add a test keyboard with a script error that will trigger the toast on
  first keystroke.
* Rearrange common/test/keyboards/invalid to make a good place for
  compiled invalid keyboards.

Fixes: #16145
Test-bot: skip
2026-07-13 11:21:42 +02:00
Marc Durdin
cda7dc6d24 chore: remove deprecated "X-UA-Compatible" and "apple-mobile-web-app-capable" metas
For Keyman Developer Server, add app.webmanifest so that it can be saved
to the home screen; other pages should not require this.

Fixes: #16172
Test-bot: skip
2026-07-01 10:27:22 +02:00
Marc Durdin
debe12f5d5 chore: Merge branch 'epic/autocorrect' into auto/A19S31-merge-master-into-autocorrect 2026-06-24 16:13:50 +02:00
Joshua Horton
4632f9809e Merge branch 'epic/autocorrect' into auto/A19S30-merge-master-into-autocorrect 2026-06-09 14:50:36 -05:00
Eberhard Beilharz
c1113ac21d
chore(web): address code review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Also change a few places that I missed.
2026-06-08 19:27:12 +02:00
Eberhard Beilharz
81bae574b9 maint(web): output name of TC reporter
This change outputs the name of the TC reporter used for a test. This
will help in troubleshooting.

Build-bot: skip build:web
Test-bot: skip
2026-05-29 11:57:27 +02:00
Eberhard Beilharz
697e6972ee fix(web): further simplification
Turns out `end(result, true)` didn't actually do anything except calling
`end(result, true)` on each child, which resulted basically in a no-op.
Therefore this change removes the `force` parameter from `end()`.
2026-05-29 11:34:07 +02:00
Eberhard Beilharz
5dab671f22 fix(web): address code review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-05-29 11:34:06 +02:00
Eberhard Beilharz
73a0dd5318 maint(web): fix Playwright TC reporter
Previously the loop at the beginning of `end` had an infinite loop
because the child was never removed from `childrenToVisit`. This change
refactors and fixes the loop.

Build-bot: skip build:web
Test-bot: skip
2026-05-29 11:34:05 +02:00
Eberhard Beilharz
39d69697bc
fix(web): further simplification
Turns out `end(result, true)` didn't actually do anything except calling
`end(result, true)` on each child, which resulted basically in a no-op.
Therefore this change removes the `force` parameter from `end()`.
2026-05-21 18:00:16 +02:00
Eberhard Beilharz
9195deccab
fix(web): address code review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-05-21 17:38:41 +02:00
Eberhard Beilharz
a2e8dc2a0f
maint(web): fix Playwright TC reporter
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Previously the loop at the beginning of `end` had an infinite loop
because the child was never removed from `childrenToVisit`. This change
refactors and fixes the loop.

Build-bot: skip build:web
Test-bot: skip
2026-05-21 09:18:45 +02:00
Eberhard Beilharz
3a25613114
maint(web): output name of TC reporter
This change outputs the name of the TC reporter used for a test. This
will help in troubleshooting.

Build-bot: skip build:web
Test-bot: skip
2026-05-13 11:28:37 +02:00
Marc Durdin
d61e5bbb18 refactor(core): clean up unit tests
Consolidate test frameworks and cleanup, including:
* all tests use Google Test
* reorganize folders, esp. kmnkbd -> api
* move all api tests into api folder
* replace references to test_assert or test_color with gtest equivalents
* leverage gtest patterns to remove boilerplate code
* dramatically simplify meson.build files and localize variables
* move shared helper code into helpers/ folder
* make test names unique and add gtest protocol for reporting back to
  teamcity

Fixes:
* CLDR test keyboards had invalid unicodeset escapes (needs to be raised
  upstream also) - was not failing tests because files were not loading
  but returning success

Test-bot: skip
2026-04-28 12:17:44 +02:00
Marc Durdin
407d9dd3b3
Merge pull request #14857 from keymanapp/epic/embed-osk-in-kmx
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
epic: embed-osk-in-kmx 🔱
2026-04-18 03:02:20 +10:00
Marc Durdin
0fb2cd2dc6 chore: Merge branch 'epic/web-core' into epic/embed-osk-in-kmx 2026-04-17 19:01:15 +02:00
Eberhard Beilharz
d93fc5aa7e
refactor(web): output id in console error of playwright TC reporter
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-17 10:05:33 +02:00
Marc Durdin
2e38a50522 change(common): remove drafted font metadata from KMX+ format
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
This comes out of a design philosophy review on what we include when we
embed OSK data into KMX.

We will now avoid embedding font name into the OSK (and hence .kmx)
altogether, and leave that metadata to the packaging data. Reasons:

1. The font information is specified in the .kps, so we have to do a
   patchup on the .kmx during packaging if we want to embed the info
   into the OSK.

2. The referenced font must be supplied separately anyway (via .kmp,
   @font-face, or system supplied, etc), so including the font facename
   in the keyboard is not really all that helpful.

3. Philosophically, the font is really a presentation level factor
   (aside from displaymap considerations). Keeping it together with
   future theming and styling choices, rather than the key layout data,
   seems appropriate.

4. This makes fewer places where font data is referenced -- in fact, to
   just one place: in the .kps/.kmp for LDML keyboards, which is great.

This also simplifies some aspects of the embed-osk-in-kmx work, removing
the need to patch the .kmx after the build, and eliminates the smelly
kmx-plus-osk-token.ts file.

A corresponding change has been made to the design document referenced
in #14857.

Test-bot: skip
2026-04-16 09:13:15 +02:00
Marc Durdin
efad936105 feat(common): add KMX+ file reader in Typescript
Add a KMX+ file reader and tests, including a round-trip builder:reader
test.

Move basic-17.txt, basic-19.txt, and basic.xml to common test resources
folder so they can be used by unit tests in common and developer.

Test-bot: skip
2026-03-16 07:21:38 +01:00
Eberhard Beilharz
933361a520
feat(web): add and use RTL test keyboard
Build-bot: skip:all, build:web
Test-bot: skip
2026-01-29 14:52:56 +01:00
Marc Durdin
f6b8bfb463
Merge branch 'epic/web-core' into auto/A19S20-merge-master-into-web-core 2026-01-16 08:40:12 +01:00
Marc Durdin
414092abf6
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S20-merge-master-into-embed-osk-in-kmx 2026-01-16 08:39:08 +01:00
Keyman Server
ad5e35e8ad
Merge branch 'epic/autocorrect' into auto/A19S20-merge-master-into-autocorrect 2026-01-16 08:35:55 +01:00
Eberhard Beilharz
b339a9772c
docs(common): improve documentation for .kmn test files
Build-bot: skip
Test-bot: skip
2026-01-14 18:16:57 +01:00
Eberhard Beilharz
afe6f467e3
Merge branch 'epic/web-core' into test/web/problem 2026-01-07 11:37:49 +01:00
Eberhard Beilharz
5666b4296e
Merge branch 'epic/web-core' into test/common/baseline 2026-01-06 18:54:37 +01:00
Eberhard Beilharz
65642ae2d4
Merge pull request #15341 from keymanapp/test/web/jsbaseline
test(web): add baseline tests for .js keyboards

This change adds baseline tests for .js keyboards. Several of those tests fail and so are skipped for now (#15342).

This test also includes the .js files of the baseline keyboards because they can't easily be generated on non-Windows platforms. This is similar to the .kmx files that are also included in the repo for the same reason.
2026-01-06 18:52:45 +01:00
Eberhard Beilharz
f65a752b47
test(web): address code review comments 2026-01-06 18:19:07 +01:00
Eberhard Beilharz
7447c49ede
chore(web): escape some additional values in TC service messages
See: https://www.jetbrains.com/help/teamcity/service-messages.html#Escaped+Values.

Follow-up-of: #15374
Build-bot: skip:all build:web
Test-bot: skip
2025-12-22 14:47:37 +01:00
Eberhard Beilharz
0dbbcc452e
maint(web): escape single quotes in TC service messages
This fixes a problem where TC shows an error because it can't find the
end of the service message for a failed test. Single quotes (and some
other characters) have to be escaped with `|'` inside of a message.

Build-bot: skip:all build:web
Test-bot: skip
2025-12-19 19:53:06 +01:00
Eberhard Beilharz
e6a6b75115
test(common): add new baseline test k_0202___alt.kmn
This is basically the same test as `k_0201___ralt_2.kmn` but uses
ALT instead of RALT in the rule.

Also update `k_0201___ralt_2.kmn` to be a bit more extensive.

Note: since the change in `k_0201___ralt_2.kmn` is only in the test
data, i.e. the comments, the .js and .kmx files don't change.

Related-to: #15358
Test-bot: skip
2025-12-16 16:52:13 +01:00
Eberhard Beilharz
6de40e903b
test(common): better group baseline tests
This change groups similar tests together. Also update `build.sh` to
compile .js files.

Follow-up-of: #15341
Test-bot: skip
2025-12-15 18:12:01 +01:00
Eberhard Beilharz
80c1f8864a
test(web): add baseline tests for .js keyboards
Test-bot: skip
2025-12-12 18:23:39 +01:00
Eberhard Beilharz
8cea94dd8c
test(web): add TC reporter for Playwright tests
This adds a custom reporter used when building on TeamCity that outputs
the test results in a form that TeamCity can show them nicely.

Build-bot: skip:all build:web
Test-bot: skip
2025-12-05 19:16:27 +01:00
Marc Durdin
4932790ac0 feat(developer): reserve space for KMX+ header in KMX written from kmcmplib
For keyboards that are v19 or later, always reserve space for the KMX+
header that will be written out in kmc-kmn, to avoid rewriting the whole
file. At this time, zero out that space.

Test-bot: skip
Build-bot: skip build:developer
2025-11-19 10:14:57 +01:00
Keyman Server
35b9dc3264
Merge branch 'epic/autocorrect' into auto/A19S15-merge-master-into-autocorrect 2025-11-07 14:06:18 +01:00
Darcy Wong
b566bcfaf4 fix(common): Set test9469 to Keyman 14 for build warnings 2025-10-30 15:39:19 +07:00
Darcy Wong
3872f57cbf fix(common): Update references to test9469 keyboard 2025-10-30 13:03:09 +07:00
Darcy Wong
66b5aeb614 chore(common): Move test9469 keyboard to common/test/keyboards/ 2025-10-30 11:56:07 +07:00
Darcy Wong
9b426a432a fix(common): Add keyboard description 2025-10-28 15:58:59 +07:00
Darcy Wong
66bf1c5f73 fix(common): Move source files to source/ 2025-10-28 14:11:17 +07:00
Darcy Wong
2e9dfec30c fix(common): Revert kpj changes 2025-10-28 13:33:22 +07:00
Darcy Wong
5bf5a5941f chore(common): Move platformtest to common/test/keyboards 2025-10-28 07:18:49 +07:00