• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

BanManagement / BanManager-WebUI / 24628542846
72%

Build:
DEFAULT BRANCH: master
Ran 19 Apr 2026 12:06PM UTC
Jobs 1
Files 211
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Apr 2026 11:58AM UTC coverage: 71.771% (+0.6%) from 71.184%
24628542846

push

github

web-flow
feat: add internationalization (i18n) support (#164) (#1765)

* feat: add internationalization (i18n) support (#164)

Introduces full i18n support using next-intl with English (en) and German
(de) catalogs, persistent per-user locale preference, locale-aware
formatting, and a standardised server-side error code system so messages
can be translated client-side.

Highlights:
- next-intl integration with deep-merged English fallback for missing keys
- LanguageSwitcher component + setLocale GraphQL mutation
- bm_web_users.locale column + persisting/loading user preference
- ExposedError now carries stable code + meta; surfaced via GraphQL
  formatError and Koa error middleware (BAD_USER_INPUT messages pass
  through verbatim per the documented out-of-scope policy)
- Locale-aware date formatting via dynamic date-fns locale loading with
  promise dedupe and eager default-locale preload
- Localised react-select and @nateradebaugh/react-datetime widgets
- Comprehensive message extraction across components, pages, notifications
- New server/data/error-translation.js shared by REST + GraphQL helpers
- Added unit tests: error-translation, formatError, locale helpers,
  setLocale mutation, me.locale field
- Documentation: README + CONTRIBUTING updates covering localisation
  workflow, adding new locales, and ExposedError compatibility note

* fix(i18n): preserve password length detail via INVALID_PASSWORD_LENGTH

The Cypress login error test expects "Invalid password, minimum length 6
characters", but with i18n the client looks up the error code in the
translation catalog. The shared INVALID_PASSWORD code mapped to the
generic "Password is invalid", losing the actionable length detail.

Split into two codes so the message stays specific without baking the
magic number into translations:

- INVALID_PASSWORD: kept generic ("Password is invalid"), used for the
  unreachable type-mismatch case.
- INVALID_PASSWORD_LENGTH: parameterised via meta.minLength so the
  tran... (continued)

1829 of 2944 branches covered (62.13%)

Branch coverage included in aggregate %.

259 of 319 new or added lines in 92 files covered. (81.19%)

3795 of 4892 relevant lines covered (77.58%)

716.91 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
3.33
0.0% server/routes/subscribe.js
5
1.69
0.0% server/graphql/resolvers/queries/player-activity.js
5
3.33
0.0% server/routes/unsubscribe.js
2
86.27
0.0% server/graphql/resolvers/mutations/resolve-report-ban.js
2
84.91
0.0% server/graphql/resolvers/mutations/resolve-report-mute.js
2
8.45
0.0% server/graphql/resolvers/queries/list-player-punishment-records.js
2
10.71
0.0% server/graphql/resolvers/queries/server-ban-stats.js
2
10.71
0.0% server/graphql/resolvers/queries/server-mute-stats.js
2
13.04
0.0% server/graphql/resolvers/queries/server-report-stats.js
2
13.04
0.0% server/graphql/resolvers/queries/server-warning-stats.js
2
3.85
0.0% server/routes/notifications.js
2
28.13
0.0% server/routes/opengraph/player.js
1
62.88
0.38% server/app.js
1
80.0
server/data/migrations/20260418194007-user-locale.js
1
45.0
0.0% server/data/webhook/index.js
1
93.33
0.0% server/graphql/resolvers/mutations/appeal-state.js
1
45.74
0.0% server/graphql/resolvers/mutations/create-appeal.js
1
26.67
0.0% server/graphql/resolvers/mutations/delete-appeal-comment.js
1
85.29
0.0% server/graphql/resolvers/mutations/delete-player-ban-record.js
1
92.86
0.0% server/graphql/resolvers/mutations/delete-player-ban.js
1
91.67
0.0% server/graphql/resolvers/mutations/delete-player-kick.js
1
85.29
0.0% server/graphql/resolvers/mutations/delete-player-mute-record.js
1
92.86
0.0% server/graphql/resolvers/mutations/delete-player-mute.js
1
91.67
0.0% server/graphql/resolvers/mutations/delete-player-note.js
1
91.67
0.0% server/graphql/resolvers/mutations/delete-player-warning.js
1
94.12
0.0% server/graphql/resolvers/mutations/report-state.js
1
86.67
0.0% server/graphql/resolvers/mutations/resolve-appeal-delete-ban.js
1
86.67
0.0% server/graphql/resolvers/mutations/resolve-appeal-delete-mute.js
1
85.71
0.0% server/graphql/resolvers/mutations/resolve-appeal-delete-warning.js
1
88.68
0.0% server/graphql/resolvers/mutations/resolve-appeal-update-ban.js
1
88.71
0.0% server/graphql/resolvers/mutations/resolve-appeal-update-mute.js
1
86.67
0.0% server/graphql/resolvers/mutations/resolve-appeal-update-warning.js
1
91.84
0.0% server/graphql/resolvers/mutations/resolve-report-warning.js
1
87.8
0.3% server/graphql/resolvers/mutations/set-password.js
1
84.62
0.0% server/graphql/resolvers/mutations/update-notification-rule.js
1
93.65
0.0% server/graphql/resolvers/mutations/update-server.js
1
7.46
0.0% server/graphql/resolvers/queries/list-appeal-comments.js
1
8.33
0.0% server/graphql/resolvers/queries/list-reports-comments.js
Jobs
ID Job ID Ran Files Coverage
1 run- - 24628542846.1 19 Apr 2026 12:06PM UTC 211
71.77
GitHub Action Run
Source Files on build 24628542846
  • Tree
  • List 211
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • d62a0ea1 on github
  • Prev Build on master (#24627636638)
  • Next Build on master (#24628561661)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc