diff --git a/frontend/src/ts/test/result.ts b/frontend/src/ts/test/result.ts
index 425aae575..fc983aae2 100644
--- a/frontend/src/ts/test/result.ts
+++ b/frontend/src/ts/test/result.ts
@@ -592,10 +592,18 @@ function updateOther(
if (TestStats.invalid) {
otherText += "
invalid";
const extra: string[] = [];
- if (result.wpm < 0 || result.wpm > 350) {
+ if (
+ result.wpm < 0 ||
+ (result.wpm > 350 && result.mode != "words" && result.mode2 != "10") ||
+ (result.wpm > 420 && result.mode == "words" && result.mode2 == "10")
+ ) {
extra.push("wpm");
}
- if (result.rawWpm < 0 || result.rawWpm > 350) {
+ if (
+ result.rawWpm < 0 ||
+ (result.rawWpm > 350 && result.mode != "words" && result.mode2 != "10") ||
+ (result.rawWpm > 420 && result.mode == "words" && result.mode2 == "10")
+ ) {
extra.push("raw");
}
if (result.acc < 75 || result.acc > 100) {
diff --git a/frontend/src/ts/test/test-logic.ts b/frontend/src/ts/test/test-logic.ts
index 601995934..bf79ceb4e 100644
--- a/frontend/src/ts/test/test-logic.ts
+++ b/frontend/src/ts/test/test-logic.ts
@@ -1596,7 +1596,15 @@ export async function finish(difficultyFailed = false): Promise {
Notifications.add("Test invalid - too short", 0);
tooShort = true;
dontSave = true;
- } else if (completedEvent.wpm < 0 || completedEvent.wpm > 350) {
+ } else if (
+ completedEvent.wpm < 0 ||
+ (completedEvent.wpm > 350 &&
+ completedEvent.mode != "words" &&
+ completedEvent.mode2 != "10") ||
+ (completedEvent.wpm > 420 &&
+ completedEvent.mode == "words" &&
+ completedEvent.mode2 == "10")
+ ) {
Notifications.add("Test invalid - wpm", 0);
TestStats.setInvalid();
dontSave = true;