diff --git a/app/assets/javascripts/discourse/tests/acceptance/about-test.js b/app/assets/javascripts/discourse/tests/acceptance/about-test.js
index b51cd5a5721..f0817e09264 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/about-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/about-test.js
@@ -6,7 +6,7 @@ acceptance("About", function () {
test("viewing", async function (assert) {
await visit("/about");
- assert.ok($("body.about-page").length, "has body class");
+ assert.ok(document.body.classList.contains("about-page"), "has body class");
assert.ok(exists(".about.admins .user-info"), "has admins");
assert.ok(exists(".about.moderators .user-info"), "has moderators");
assert.ok(exists(".about.stats tr td"), "has stats");
diff --git a/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js b/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js
index c931fa082e4..64ccfc7f5b0 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js
@@ -2,7 +2,7 @@ import {
acceptance,
count,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import {
click,
@@ -58,7 +58,7 @@ acceptance("Admin - Site Settings", function (needs) {
await visit("/admin/site_settings");
assert.strictEqual(
- queryAll(".row.setting .setting-label h3 a").attr("href"),
+ query(".row.setting .setting-label h3 a").getAttribute("href"),
"/admin/logs/staff_action_logs?filters=%7B%22subject%22%3A%22title%22%2C%22action_name%22%3A%22change_site_setting%22%7D&force_refresh=true",
"it links to the staff action log"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/badges-test.js b/app/assets/javascripts/discourse/tests/acceptance/badges-test.js
index 6eaaf10431b..394f82655e5 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/badges-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/badges-test.js
@@ -9,7 +9,10 @@ acceptance("Badges", function (needs) {
test("Visit Badge Pages", async function (assert) {
await visit("/badges");
- assert.ok($("body.badges-page").length, "has body class");
+ assert.ok(
+ document.body.classList.contains("badges-page"),
+ "has body class"
+ );
assert.ok(exists(".badge-groups .badge-card"), "has a list of badges");
await visit("/badges/9/autobiographer");
@@ -23,6 +26,9 @@ acceptance("Badges", function (needs) {
const availableBadgeTitles = selectKit(".select-kit");
await visit("/badges/50/custombadge");
await availableBadgeTitles.expand();
- assert.ok(availableBadgeTitles.rowByIndex(1).name() === "CustomBadge");
+ assert.strictEqual(
+ availableBadgeTitles.rowByIndex(1).name(),
+ "CustomBadge"
+ );
});
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/category-edit-security-test.js b/app/assets/javascripts/discourse/tests/acceptance/category-edit-security-test.js
index c09719d96eb..200d5b05ddd 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/category-edit-security-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/category-edit-security-test.js
@@ -10,14 +10,14 @@ import I18n from "I18n";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
-acceptance("Category Edit - security", function (needs) {
+acceptance("Category Edit - Security", function (needs) {
needs.user();
test("default", async function (assert) {
await visit("/c/bug/edit/security");
- const firstRow = queryAll(".row-body").first();
- const badgeName = firstRow.find(".group-name-label").text();
+ const firstRow = query(".row-body");
+ const badgeName = firstRow.querySelector(".group-name-label").innerText;
assert.strictEqual(badgeName, "everyone");
assert.strictEqual(count(".d-icon-check-square"), 3);
@@ -56,11 +56,14 @@ acceptance("Category Edit - security", function (needs) {
await availableGroups.expand();
await availableGroups.selectRowByValue("staff");
- const addedRow = queryAll(".row-body").last();
+ const addedRow = [...queryAll(".row-body")].at(-1);
- assert.strictEqual(addedRow.find(".group-name-label").text(), "staff");
assert.strictEqual(
- addedRow.find(".d-icon-check-square").length,
+ addedRow.querySelector(".group-name-label").innerText,
+ "staff"
+ );
+ assert.strictEqual(
+ addedRow.querySelectorAll(".d-icon-check-square").length,
3,
"new row permissions match default 'everyone' permissions"
);
@@ -70,7 +73,6 @@ acceptance("Category Edit - security", function (needs) {
const availableGroups = selectKit(".available-groups");
await visit("/c/bug/edit/security");
-
await click(".row-body .remove-permission");
assert.ok(!exists(".row-body"), "removes the permission from the list");
@@ -84,11 +86,14 @@ acceptance("Category Edit - security", function (needs) {
"adds back the permission tp the list"
);
- const firstRow = queryAll(".row-body").first();
+ const firstRow = query(".row-body");
- assert.strictEqual(firstRow.find(".group-name-label").text(), "everyone");
assert.strictEqual(
- firstRow.find(".d-icon-check-square").length,
+ firstRow.querySelector(".group-name-label").innerText,
+ "everyone"
+ );
+ assert.strictEqual(
+ firstRow.querySelectorAll(".d-icon-check-square").length,
1,
"adds only 'See' permission for a new row"
);
@@ -99,10 +104,10 @@ acceptance("Category Edit - security", function (needs) {
await visit("/c/bug/edit/security");
- const everyoneRow = queryAll(".row-body").first();
+ const everyoneRow = query(".row-body");
assert.strictEqual(
- everyoneRow.find(".reply-granted, .create-granted").length,
+ everyoneRow.querySelectorAll(".reply-granted, .create-granted").length,
2,
"everyone has full permissions by default"
);
@@ -110,58 +115,58 @@ acceptance("Category Edit - security", function (needs) {
await availableGroups.expand();
await availableGroups.selectRowByValue("staff");
- const staffRow = queryAll(".row-body").last();
+ const staffRow = [...queryAll(".row-body")].at(-1);
assert.strictEqual(
- staffRow.find(".reply-granted, .create-granted").length,
+ staffRow.querySelectorAll(".reply-granted, .create-granted").length,
2,
"staff group also has full permissions"
);
- await click(everyoneRow.find(".reply-toggle")[0]);
+ await click(everyoneRow.querySelector(".reply-toggle"));
assert.strictEqual(
- everyoneRow.find(".reply-granted, .create-granted").length,
+ everyoneRow.querySelectorAll(".reply-granted, .create-granted").length,
0,
"everyone does not have reply or create"
);
assert.strictEqual(
- staffRow.find(".reply-granted, .create-granted").length,
+ staffRow.querySelectorAll(".reply-granted, .create-granted").length,
2,
"staff group still has full permissions"
);
- await click(staffRow.find(".reply-toggle")[0]);
+ await click(staffRow.querySelector(".reply-toggle"));
assert.strictEqual(
- everyoneRow.find(".reply-granted, .create-granted").length,
+ everyoneRow.querySelectorAll(".reply-granted, .create-granted").length,
0,
"everyone permission unchanged"
);
assert.strictEqual(
- staffRow.find(".reply-granted").length,
+ staffRow.querySelectorAll(".reply-granted").length,
0,
"staff does not have reply permission"
);
assert.strictEqual(
- staffRow.find(".create-granted").length,
+ staffRow.querySelectorAll(".create-granted").length,
0,
"staff does not have create permission"
);
- await click(everyoneRow.find(".create-toggle")[0]);
+ await click(everyoneRow.querySelector(".create-toggle"));
assert.strictEqual(
- everyoneRow.find(".reply-granted, .create-granted").length,
+ everyoneRow.querySelectorAll(".reply-granted, .create-granted").length,
2,
"everyone has full permissions"
);
assert.strictEqual(
- staffRow.find(".reply-granted, .create-granted").length,
+ staffRow.querySelectorAll(".reply-granted, .create-granted").length,
2,
"staff group has full permissions (inherited from everyone)"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-edit-conflict-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-edit-conflict-test.js
index 312a2954894..51f33213f15 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-edit-conflict-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-edit-conflict-test.js
@@ -20,7 +20,7 @@ acceptance("Composer - Edit conflict", function (needs) {
".d-editor-input",
"hello world hello world hello world hello world hello world"
);
- assert.ok(lastBody.indexOf("originalText") === -1);
+ assert.ok(!lastBody.includes("originalText"));
});
test("Should send originalText when editing a reply", async function (assert) {
@@ -31,6 +31,6 @@ acceptance("Composer - Edit conflict", function (needs) {
".d-editor-input",
"hello world hello world hello world hello world hello world"
);
- assert.ok(lastBody.indexOf("originalText") > -1);
+ assert.ok(lastBody.includes("originalText"));
});
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-hyperlink-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-hyperlink-test.js
index 507641d7228..6c4cd9b003c 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-hyperlink-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-hyperlink-test.js
@@ -2,7 +2,6 @@ import {
acceptance,
exists,
query,
- queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, triggerKeyEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
@@ -28,7 +27,7 @@ acceptance("Composer - Hyperlink", function (needs) {
await click(".modal-footer button.btn-primary");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"This is a link to [Google](https://google.com)",
"adds link with url and text, prepends 'https://'"
);
@@ -46,7 +45,7 @@ acceptance("Composer - Hyperlink", function (needs) {
await click(".modal-footer button.btn-danger");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"Reset textarea contents.",
"doesn’t insert anything after cancelling"
);
@@ -65,7 +64,7 @@ acceptance("Composer - Hyperlink", function (needs) {
await click(".modal-footer button.btn-primary");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"[Reset](https://somelink.com) textarea contents.",
"adds link to a selected text"
);
@@ -96,7 +95,7 @@ acceptance("Composer - Hyperlink", function (needs) {
);
assert.ok(
- queryAll(".link-url").val().includes("http"),
+ query(".link-url").value.includes("http"),
"replaces link url field with internal link"
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js
index b5148fa888d..c81b0fdde2e 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js
@@ -5,7 +5,6 @@ import {
exists,
invisible,
query,
- queryAll,
visible,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
@@ -34,7 +33,7 @@ acceptance("Composer - Image Preview", function (needs) {
const assertImageResized = (assert, uploads) => {
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
uploads.join("\n"),
"it resizes uploaded image"
);
@@ -84,9 +83,7 @@ acceptance("Composer - Image Preview", function (needs) {
uploads[0] =
"![test|690x313, 50%](upload://test.png)";
await click(
- queryAll(
- ".button-wrapper[data-image-index='0'] .scale-btn[data-scale='50']"
- )[0]
+ ".button-wrapper[data-image-index='0'] .scale-btn[data-scale='50']"
);
assertImageResized(assert, uploads);
@@ -94,9 +91,7 @@ acceptance("Composer - Image Preview", function (needs) {
uploads[6] =
"![onTheSameLine1|200x200, 50%](upload://onTheSameLine1.jpeg) ![onTheSameLine2|250x250](upload://onTheSameLine2.jpeg)";
await click(
- queryAll(
- ".button-wrapper[data-image-index='3'] .scale-btn[data-scale='50']"
- )[0]
+ ".button-wrapper[data-image-index='3'] .scale-btn[data-scale='50']"
);
assertImageResized(assert, uploads);
@@ -104,45 +99,35 @@ acceptance("Composer - Image Preview", function (needs) {
uploads[6] =
"![onTheSameLine1|200x200, 50%](upload://onTheSameLine1.jpeg) ![onTheSameLine2|250x250, 75%](upload://onTheSameLine2.jpeg)";
await click(
- queryAll(
- ".button-wrapper[data-image-index='4'] .scale-btn[data-scale='75']"
- )[0]
+ ".button-wrapper[data-image-index='4'] .scale-btn[data-scale='75']"
);
assertImageResized(assert, uploads);
// Make sure we target the correct image if there are duplicates
uploads[7] = "![identicalImage|300x300, 50%](upload://identicalImage.png)";
await click(
- queryAll(
- ".button-wrapper[data-image-index='5'] .scale-btn[data-scale='50']"
- )[0]
+ ".button-wrapper[data-image-index='5'] .scale-btn[data-scale='50']"
);
assertImageResized(assert, uploads);
// Try the other dupe
uploads[8] = "![identicalImage|300x300, 75%](upload://identicalImage.png)";
await click(
- queryAll(
- ".button-wrapper[data-image-index='6'] .scale-btn[data-scale='75']"
- )[0]
+ ".button-wrapper[data-image-index='6'] .scale-btn[data-scale='75']"
);
assertImageResized(assert, uploads);
// Don't mess with image titles
uploads[10] = `![image|690x220, 75%](upload://test.png "image title")`;
await click(
- queryAll(
- ".button-wrapper[data-image-index='8'] .scale-btn[data-scale='75']"
- )[0]
+ ".button-wrapper[data-image-index='8'] .scale-btn[data-scale='75']"
);
assertImageResized(assert, uploads);
// Keep data attributes
uploads[12] = `![test|foo=bar|690x313, 75%|bar=baz](upload://test.png)`;
await click(
- queryAll(
- ".button-wrapper[data-image-index='9'] .scale-btn[data-scale='75']"
- )[0]
+ ".button-wrapper[data-image-index='9'] .scale-btn[data-scale='75']"
);
assertImageResized(assert, uploads);
@@ -192,24 +177,20 @@ acceptance("Composer - Image Preview", function (needs) {
assert.ok(visible(altTextEditOk), "alt text edit ok button is visible");
assert.ok(visible(altTextEditCancel), "alt text edit cancel is hidden");
assert.equal(
- queryAll(altTextInput).val(),
+ query(altTextInput).value,
"zorro",
"correct alt text in input"
);
await triggerKeyEvent(altTextInput, "keypress", "[".charCodeAt(0));
await triggerKeyEvent(altTextInput, "keypress", "]".charCodeAt(0));
- assert.equal(
- queryAll(altTextInput).val(),
- "zorro",
- "does not input [ ] keys"
- );
+ assert.equal(query(altTextInput).value, "zorro", "does not input [ ] keys");
await fillIn(altTextInput, "steak");
await triggerKeyEvent(altTextInput, "keypress", 13);
assert.equal(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"![steak|200x200](upload://zorro.png)",
"alt text updated"
);
@@ -246,7 +227,7 @@ acceptance("Composer - Image Preview", function (needs) {
await click(altTextEditOk);
assert.equal(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"![steak|200x200](upload://zorro.png)",
"alt text updated"
);
@@ -285,7 +266,7 @@ acceptance("Composer - Image Preview", function (needs) {
await click(altTextEditCancel);
assert.equal(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"![zorro|200x200](upload://zorro.png)",
"alt text not updated"
);
@@ -320,7 +301,7 @@ acceptance("Composer - Image Preview", function (needs) {
await triggerKeyEvent(altTextInput, "keypress", 13);
assert.equal(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
`![tomtom|200x200](upload://zorro.png) ![not-zorro|200x200](upload://not-zorro.png)`,
"the correct image's alt text updated"
);
@@ -342,7 +323,7 @@ acceptance("Composer - Image Preview", function (needs) {
await triggerKeyEvent(altTextInput, "keypress", 13);
assert.equal(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"![|200x200](upload://zorro.png)",
"alt text updated"
);
@@ -354,7 +335,7 @@ acceptance("Composer - Image Preview", function (needs) {
await triggerKeyEvent(altTextInput, "keypress", 13);
assert.equal(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"![tomtom|200x200](upload://zorro.png)",
"alt text updated"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-onebox-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-onebox-test.js
index 7a875def554..ee5b26898f5 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-onebox-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-onebox-test.js
@@ -1,4 +1,8 @@
-import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
+import {
+ acceptance,
+ query,
+ visible,
+} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
@@ -28,8 +32,9 @@ http://www.example.com/has-title.html
`
);
+ assert.ok(visible(".d-editor-preview"));
assert.strictEqual(
- queryAll(".d-editor-preview:visible").html().trim(),
+ query(".d-editor-preview").innerHTML.trim(),
`
This is another test This is a great title
@@ -68,14 +73,14 @@ acceptance("Composer - Inline Onebox", function (needs) {
await fillIn(".d-editor-input", `Test www.example.com/page`);
assert.strictEqual(requestsCount, 1);
assert.strictEqual(
- queryAll(".d-editor-preview").html().trim(),
+ query(".d-editor-preview").innerHTML.trim(),
'Test www.example.com/page
'
);
await fillIn(".d-editor-input", `Test www.example.com/page Test`);
assert.strictEqual(requestsCount, 1);
assert.strictEqual(
- queryAll(".d-editor-preview").html().trim(),
+ query(".d-editor-preview").innerHTML.trim(),
'Test www.example.com/page Test
'
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js
index 19bf983d76f..62690a7ef37 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js
@@ -341,9 +341,8 @@ acceptance("Composer", function (needs) {
await click(".topic-post:nth-of-type(1) button.show-more-actions");
await click(".topic-post:nth-of-type(1) button.edit");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("Any plans to support"),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("Any plans to support"),
"it populates the input with the post text"
);
@@ -356,15 +355,15 @@ acceptance("Composer", function (needs) {
"it has the edits icon"
);
assert.ok(
- query("#topic-title h1").innerText.indexOf(
+ query("#topic-title h1").innerText.includes(
"This is the new text for the title"
- ) !== -1,
+ ),
"it shows the new title"
);
assert.ok(
- query(".topic-post:nth-of-type(1) .cooked").innerText.indexOf(
+ query(".topic-post:nth-of-type(1) .cooked").innerText.includes(
"This is the new text for the post"
- ) !== -1,
+ ),
"it updates the post"
);
});
@@ -406,15 +405,13 @@ acceptance("Composer", function (needs) {
await visit("/t/this-is-a-test-topic/9");
await click(".topic-post:nth-of-type(1) button.edit");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the first post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the first post."),
"it populates the input with the post text"
);
await click(".topic-post:nth-of-type(2) button.edit");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the second post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the second post."),
"it populates the input with the post text"
);
});
@@ -431,9 +428,8 @@ acceptance("Composer", function (needs) {
);
await click(".modal-footer button.discard-draft");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the second post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the second post."),
"it populates the input with the post text"
);
});
@@ -442,9 +438,8 @@ acceptance("Composer", function (needs) {
await visit("/t/this-is-a-test-topic/9");
await click(".topic-post:nth-of-type(1) button.edit");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the first post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the first post."),
"it populates the input with the post text"
);
await click(".topic-post:nth-of-type(1) button.reply");
@@ -454,9 +449,8 @@ acceptance("Composer", function (needs) {
"it clears the input"
);
await click(".topic-post:nth-of-type(1) button.edit");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the first post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the first post."),
"it populates the input with the post text"
);
});
@@ -627,9 +621,8 @@ acceptance("Composer", function (needs) {
"it pops up a confirmation dialog"
);
await click(".modal-footer button.discard-draft");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the first post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the first post."),
"it populates the input with the post text"
);
});
@@ -656,9 +649,8 @@ acceptance("Composer", function (needs) {
"has keep editing button"
);
await click(".modal-footer button.save-draft");
- assert.strictEqual(
- query(".d-editor-input").value.indexOf("This is the second post."),
- 0,
+ assert.ok(
+ query(".d-editor-input").value.startsWith("This is the second post."),
"it populates the input with the post text"
);
});
@@ -928,7 +920,7 @@ acceptance("Composer - Customizations", function (needs) {
function customComposerAction(composer) {
return (
- (composer.tags || []).indexOf("monkey") !== -1 &&
+ (composer.tags || []).includes("monkey") &&
composer.action === CREATE_TOPIC
);
}
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-topic-links-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-topic-links-test.js
index ce2e1468813..e8e0127b591 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-topic-links-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-topic-links-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
@@ -19,7 +19,7 @@ acceptance("Composer topic featured links", function (needs) {
await click("#create-topic");
await fillIn("#reply-title", "http://www.example.com/has-title.html");
assert.ok(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox") > 0,
+ query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"it pastes the link into the body and previews it"
);
assert.ok(
@@ -27,7 +27,7 @@ acceptance("Composer topic featured links", function (needs) {
"the body is now good"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"An interesting article",
"title is from the oneboxed article"
);
@@ -38,7 +38,7 @@ acceptance("Composer topic featured links", function (needs) {
await click("#create-topic");
await fillIn("#reply-title", "http://www.example.com/no-title.html");
assert.ok(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox") > 0,
+ query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"it pastes the link into the body and previews it"
);
assert.ok(
@@ -46,7 +46,7 @@ acceptance("Composer topic featured links", function (needs) {
"the body is now good"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"http://www.example.com/no-title.html",
"title is unchanged"
);
@@ -57,7 +57,7 @@ acceptance("Composer topic featured links", function (needs) {
await click("#create-topic");
await fillIn("#reply-title", "https://www.youtube.com/watch?v=dQw4w9WgXcQ");
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"Rick Astley - Never Gonna Give You Up (Video)",
"title is from the oneboxed article"
);
@@ -68,7 +68,7 @@ acceptance("Composer topic featured links", function (needs) {
await click("#create-topic");
await fillIn("#reply-title", "http://www.example.com/nope-onebox.html");
assert.ok(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox") > 0,
+ query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"it pastes the link into the body and previews it"
);
assert.ok(
@@ -76,7 +76,7 @@ acceptance("Composer topic featured links", function (needs) {
"link is pasted into body"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"http://www.example.com/nope-onebox.html",
"title is unchanged"
);
@@ -87,18 +87,17 @@ acceptance("Composer topic featured links", function (needs) {
await click("#create-topic");
const title = "http://" + window.location.hostname + "/internal-page.html";
await fillIn("#reply-title", title);
- assert.strictEqual(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox"),
- -1,
+ assert.ok(
+ !query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"onebox preview doesn't show"
);
assert.strictEqual(
- queryAll(".d-editor-input").val().length,
+ query(".d-editor-input").value.length,
0,
"link isn't put into the post"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
title,
"title is unchanged"
);
@@ -112,7 +111,7 @@ acceptance("Composer topic featured links", function (needs) {
"http://www.example.com/has-title-and-a-url-that-is-more-than-80-characters-because-thats-good-for-seo-i-guess.html"
);
assert.ok(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox") > 0,
+ query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"it pastes the link into the body and previews it"
);
assert.ok(
@@ -120,7 +119,7 @@ acceptance("Composer topic featured links", function (needs) {
"the body is now good"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"An interesting article",
"title is from the oneboxed article"
);
@@ -130,18 +129,17 @@ acceptance("Composer topic featured links", function (needs) {
await visit("/");
await click("#create-topic");
await fillIn("#reply-title", "http://www.example.com/has-title.html test");
- assert.strictEqual(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox"),
- -1,
+ assert.ok(
+ !query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"onebox preview doesn't show"
);
assert.strictEqual(
- queryAll(".d-editor-input").val().length,
+ query(".d-editor-input").value.length,
0,
"link isn't put into the post"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"http://www.example.com/has-title.html test",
"title is unchanged"
);
@@ -155,14 +153,14 @@ acceptance("Composer topic featured links", function (needs) {
"https://twitter.com/discourse/status/1357664660724482048"
);
assert.ok(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox") > 0,
+ query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"it pastes the link into the body and previews it"
);
assert.ok(
exists(".d-editor-textarea-wrapper .popup-tip.good"),
"the body is now good"
);
- assert.blank(queryAll(".title-input input").val(), "title is blank");
+ assert.blank(query(".title-input input").value, "title is blank");
});
});
@@ -186,7 +184,7 @@ acceptance(
);
await fillIn("#reply-title", "http://www.example.com/has-title.html");
assert.ok(
- queryAll(".d-editor-preview").html().trim().indexOf("onebox") > 0,
+ query(".d-editor-preview").innerHTML.trim().includes("onebox"),
"it pastes the link into the body and previews it"
);
assert.ok(
@@ -194,7 +192,7 @@ acceptance(
"the body is now good"
);
assert.strictEqual(
- queryAll(".title-input input").val(),
+ query(".title-input input").value,
"An interesting article",
"title is from the oneboxed article"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/create-invite-modal-test.js b/app/assets/javascripts/discourse/tests/acceptance/create-invite-modal-test.js
index cf08b5a8ae2..b534b80ec56 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/create-invite-modal-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/create-invite-modal-test.js
@@ -151,7 +151,7 @@ acceptance("Invites - Email Invites", function (needs) {
assert.ok(exists(".save-invite"), "shows save without email button");
await click(".save-invite");
assert.ok(
- lastRequest.requestBody.indexOf("skip_email=true") !== -1,
+ lastRequest.requestBody.includes("skip_email=true"),
"sends skip_email to server"
);
@@ -159,7 +159,7 @@ acceptance("Invites - Email Invites", function (needs) {
assert.ok(exists(".send-invite"), "shows save and send email button");
await click(".send-invite");
assert.ok(
- lastRequest.requestBody.indexOf("send_email=true") !== -1,
+ lastRequest.requestBody.includes("send_email=true"),
"sends send_email to server"
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/dashboard-test.js b/app/assets/javascripts/discourse/tests/acceptance/dashboard-test.js
index fac3c52d7ea..30e9487d804 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/dashboard-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/dashboard-test.js
@@ -1,7 +1,8 @@
import {
acceptance,
+ count,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
@@ -46,6 +47,7 @@ acceptance("Dashboard", function (needs) {
test("general tab", async function (assert) {
await visit("/admin");
+
assert.ok(exists(".admin-report.signups"), "signups report");
assert.ok(exists(".admin-report.posts"), "posts report");
assert.ok(exists(".admin-report.dau-by-mau"), "dau-by-mau report");
@@ -57,11 +59,10 @@ acceptance("Dashboard", function (needs) {
exists(".admin-report.new-contributors"),
"new-contributors report"
);
-
assert.strictEqual(
- $(".section.dashboard-problems .problem-messages ul li:first-child")
- .html()
- .trim(),
+ query(
+ ".section.dashboard-problems .problem-messages ul li:first-child"
+ ).innerHTML.trim(),
"Houston...",
"displays problems"
);
@@ -81,16 +82,14 @@ acceptance("Dashboard", function (needs) {
await click(".dashboard .navigation-item.reports .navigation-link");
assert.strictEqual(
- queryAll(".dashboard .reports-index.section .reports-list .report")
- .length,
+ count(".dashboard .reports-index.section .reports-list .report"),
1
);
await fillIn(".dashboard .filter-reports-input", "flags");
assert.strictEqual(
- queryAll(".dashboard .reports-index.section .reports-list .report")
- .length,
+ count(".dashboard .reports-index.section .reports-list .report"),
0
);
@@ -98,8 +97,7 @@ acceptance("Dashboard", function (needs) {
await click(".dashboard .navigation-item.reports .navigation-link");
assert.strictEqual(
- queryAll(".dashboard .reports-index.section .reports-list .report")
- .length,
+ count(".dashboard .reports-index.section .reports-list .report"),
1,
"navigating back and forth resets filter"
);
@@ -107,8 +105,7 @@ acceptance("Dashboard", function (needs) {
await fillIn(".dashboard .filter-reports-input", "activities");
assert.strictEqual(
- queryAll(".dashboard .reports-index.section .reports-list .report")
- .length,
+ count(".dashboard .reports-index.section .reports-list .report"),
1,
"filter is case insensitive"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/do-not-disturb-test.js b/app/assets/javascripts/discourse/tests/acceptance/do-not-disturb-test.js
index e2e368d27d3..c9dcae0a36a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/do-not-disturb-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/do-not-disturb-test.js
@@ -1,5 +1,6 @@
import {
acceptance,
+ count,
exists,
query,
queryAll,
@@ -56,7 +57,7 @@ acceptance("Do not disturb", function (needs) {
assert.ok(exists(".do-not-disturb-modal"), "DND modal is displayed");
assert.strictEqual(
- queryAll(".do-not-disturb-tile").length,
+ count(".do-not-disturb-tile"),
4,
"There are 4 duration choices"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/emoji-picker-test.js b/app/assets/javascripts/discourse/tests/acceptance/emoji-picker-test.js
index 5c8af7a4ee2..5faac2f7dc1 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/emoji-picker-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/emoji-picker-test.js
@@ -1,5 +1,6 @@
import {
acceptance,
+ count,
exists,
query,
queryAll,
@@ -45,7 +46,7 @@ acceptance("EmojiPicker", function (needs) {
await click(".emoji-picker-emoji-area img.emoji[title='grinning']");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
":grinning:",
"it adds the emoji code in the editor when selected"
);
@@ -60,7 +61,7 @@ acceptance("EmojiPicker", function (needs) {
await click("button.emoji.btn");
await click(".emoji-picker-emoji-area img.emoji[title='grinning']");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"This is a test input :grinning:",
"it adds the emoji code and a leading whitespace when there is text"
);
@@ -70,7 +71,7 @@ acceptance("EmojiPicker", function (needs) {
await click(".emoji-picker-emoji-area img.emoji[title='grinning']");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
"This is a test input :grinning:",
"it adds the emoji code and no leading whitespace when user already entered whitespace"
);
@@ -122,15 +123,14 @@ acceptance("EmojiPicker", function (needs) {
await click(".emoji-picker-emoji-area img.emoji[title='grinning']");
assert.strictEqual(
- queryAll('.section[data-section="recent"] .section-group img.emoji')
- .length,
+ count('.section[data-section="recent"] .section-group img.emoji'),
2,
"it has multiple recent emojis"
);
assert.strictEqual(
/grinning/.test(
- queryAll(".section.recent .section-group img.emoji").first().attr("src")
+ query(".section.recent .section-group img.emoji").getAttribute("src")
),
true,
"it puts the last used emoji in first"
diff --git a/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js b/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js
index eb551cf2a82..de2b5716010 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js
@@ -2,7 +2,8 @@ import {
acceptance,
exists,
normalizeHtml,
- queryAll,
+ query,
+ visible,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, triggerKeyEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
@@ -16,8 +17,9 @@ acceptance("Emoji", function (needs) {
await click("#topic-footer-buttons .btn.create");
await fillIn(".d-editor-input", "this is an emoji :blonde_woman:");
+ assert.ok(visible(".d-editor-preview"));
assert.strictEqual(
- normalizeHtml(queryAll(".d-editor-preview:visible").html().trim()),
+ normalizeHtml(query(".d-editor-preview").innerHTML.trim()),
normalizeHtml(
`this is an emoji
`
)
@@ -30,8 +32,9 @@ acceptance("Emoji", function (needs) {
await fillIn(".d-editor-input", "this is an emoji :blonde_woman:t5:");
+ assert.ok(visible(".d-editor-preview"));
assert.strictEqual(
- normalizeHtml(queryAll(".d-editor-preview:visible").html().trim()),
+ normalizeHtml(query(".d-editor-preview").innerHTML.trim()),
normalizeHtml(
`this is an emoji
`
)
diff --git a/app/assets/javascripts/discourse/tests/acceptance/encoded-category-test.js b/app/assets/javascripts/discourse/tests/acceptance/encoded-category-test.js
index 9e5a80bead9..092d4875b34 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/encoded-category-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/encoded-category-test.js
@@ -43,15 +43,22 @@ acceptance("Encoded Sub Category Discovery", function (needs) {
});
test("Visit subcategory by slug", async function (assert) {
- let bodySelector =
- "body.category-\\%E6\\%BC\\%A2\\%E5\\%AD\\%97-parent-\\%E6\\%BC\\%A2\\%E5\\%AD\\%97-subcategory";
+ const bodyClass =
+ "category-%E6%BC%A2%E5%AD%97-parent-%E6%BC%A2%E5%AD%97-subcategory";
+
await visit("/c/%E6%BC%A2%E5%AD%97-parent/%E6%BC%A2%E5%AD%97-subcategory");
- assert.ok($(bodySelector).length, "has the default navigation");
+ assert.ok(
+ document.body.classList.contains(bodyClass),
+ "has the default navigation"
+ );
assert.ok(exists(".topic-list"), "The list of topics was rendered");
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
await visit("/c/漢字-parent/漢字-subcategory");
- assert.ok($(bodySelector).length, "has the default navigation");
+ assert.ok(
+ document.body.classList.contains(bodyClass),
+ "has the default navigation"
+ );
assert.ok(exists(".topic-list"), "The list of topics was rendered");
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/forgot-password-test.js b/app/assets/javascripts/discourse/tests/acceptance/forgot-password-test.js
index e675c72ffa2..7d2f7af63b7 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/forgot-password-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/forgot-password-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import I18n from "I18n";
@@ -23,9 +23,8 @@ acceptance("Forgot password", function (needs) {
await click("header .login-button");
await click("#forgot-password-link");
- assert.strictEqual(
- queryAll(".forgot-password-reset").attr("disabled"),
- "disabled",
+ assert.ok(
+ query(".forgot-password-reset").disabled,
"it should disable the button until the field is filled"
);
@@ -33,7 +32,7 @@ acceptance("Forgot password", function (needs) {
await click(".forgot-password-reset");
assert.strictEqual(
- queryAll(".alert-error").html().trim(),
+ query(".alert-error").innerHTML.trim(),
I18n.t("forgot_password.complete_username_not_found", {
username: "someuser",
}),
@@ -44,7 +43,7 @@ acceptance("Forgot password", function (needs) {
await click(".forgot-password-reset");
assert.strictEqual(
- queryAll(".alert-error").html().trim(),
+ query(".alert-error").innerHTML.trim(),
I18n.t("forgot_password.complete_email_not_found", {
email: "someuser@gmail.com",
}),
@@ -63,7 +62,7 @@ acceptance("Forgot password", function (needs) {
);
assert.strictEqual(
- queryAll(".modal-body").html().trim(),
+ query(".modal-body").innerHTML.trim(),
I18n.t("forgot_password.complete_username_found", {
username: "someuser",
}),
@@ -77,7 +76,7 @@ acceptance("Forgot password", function (needs) {
await click(".forgot-password-reset");
assert.strictEqual(
- queryAll(".modal-body").html().trim(),
+ query(".modal-body").innerHTML.trim(),
I18n.t("forgot_password.complete_email_found", {
email: "someuser@gmail.com",
}),
@@ -100,9 +99,8 @@ acceptance(
await click("header .login-button");
await click("#forgot-password-link");
- assert.strictEqual(
- queryAll(".forgot-password-reset").attr("disabled"),
- "disabled",
+ assert.ok(
+ query(".forgot-password-reset").disabled,
"it should disable the button until the field is filled"
);
@@ -110,7 +108,7 @@ acceptance(
await click(".forgot-password-reset");
assert.strictEqual(
- queryAll(".modal-body").html().trim(),
+ query(".modal-body").innerHTML.trim(),
I18n.t("forgot_password.complete_username", {
username: "someuser",
}),
diff --git a/app/assets/javascripts/discourse/tests/acceptance/group-index-test.js b/app/assets/javascripts/discourse/tests/acceptance/group-index-test.js
index 0aa2399c4f4..2c5538aede1 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/group-index-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/group-index-test.js
@@ -2,6 +2,7 @@ import {
acceptance,
count,
exists,
+ query,
queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
@@ -14,8 +15,9 @@ acceptance("Group Members - Anonymous", function () {
test("Viewing Members as anon user", async function (assert) {
await visit("/g/discourse");
- assert.ok(
- count(".avatar-flair .d-icon-adjust") === 1,
+ assert.strictEqual(
+ count(".avatar-flair .d-icon-adjust"),
+ 1,
"it displays the group's avatar flair"
);
assert.ok(exists(".group-members tr"), "it lists group members");
@@ -26,7 +28,7 @@ acceptance("Group Members - Anonymous", function () {
);
assert.strictEqual(
- queryAll(".group-username-filter").attr("placeholder"),
+ query(".group-username-filter").getAttribute("placeholder"),
I18n.t("groups.members.filter_placeholder"),
"it should display the right filter placeholder"
);
@@ -64,7 +66,7 @@ acceptance("Group Members", function (needs) {
);
assert.strictEqual(
- queryAll(".group-username-filter").attr("placeholder"),
+ query(".group-username-filter").getAttribute("placeholder"),
I18n.t("groups.members.filter_placeholder_admin"),
"it should display the right filter placeholder"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/login-with-email-and-hide-email-address-taken-test.js b/app/assets/javascripts/discourse/tests/acceptance/login-with-email-and-hide-email-address-taken-test.js
index f2264fd98b1..2c81e94fd4d 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/login-with-email-and-hide-email-address-taken-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/login-with-email-and-hide-email-address-taken-test.js
@@ -1,4 +1,4 @@
-import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
+import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import I18n from "I18n";
import { test } from "qunit";
@@ -22,7 +22,7 @@ acceptance("Login with email - hide email address taken", function (needs) {
await click("#email-login-link");
assert.strictEqual(
- queryAll(".alert-success").html().trim(),
+ query(".alert-success").innerHTML.trim(),
I18n.t("email_login.complete_email_found", {
email: "someuser@example.com",
}),
diff --git a/app/assets/javascripts/discourse/tests/acceptance/login-with-email-test.js b/app/assets/javascripts/discourse/tests/acceptance/login-with-email-test.js
index b009495530d..ee9718f0fa4 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/login-with-email-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/login-with-email-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import I18n from "I18n";
@@ -38,7 +38,7 @@ acceptance("Login with email", function (needs) {
await click("#email-login-link");
assert.strictEqual(
- queryAll(".alert-error").html(),
+ query(".alert-error").innerHTML,
I18n.t("email_login.complete_username_not_found", {
username: "someuser",
}),
@@ -49,7 +49,7 @@ acceptance("Login with email", function (needs) {
await click("#email-login-link");
assert.strictEqual(
- queryAll(".alert-error").html(),
+ query(".alert-error").innerHTML,
I18n.t("email_login.complete_email_not_found", {
email: "someuser@gmail.com",
}),
@@ -63,7 +63,7 @@ acceptance("Login with email", function (needs) {
await click("#email-login-link");
assert.strictEqual(
- queryAll(".alert-success").html().trim(),
+ query(".alert-success").innerHTML.trim(),
I18n.t("email_login.complete_username_found", { username: "someuser" }),
"it should display a success message for a valid username"
);
@@ -74,7 +74,7 @@ acceptance("Login with email", function (needs) {
await click("#email-login-link");
assert.strictEqual(
- queryAll(".alert-success").html().trim(),
+ query(".alert-success").innerHTML.trim(),
I18n.t("email_login.complete_email_found", {
email: "someuser@gmail.com",
}),
diff --git a/app/assets/javascripts/discourse/tests/acceptance/mobile-discovery-test.js b/app/assets/javascripts/discourse/tests/acceptance/mobile-discovery-test.js
index 43be07e2f92..05bcd0b0d7b 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/mobile-discovery-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/mobile-discovery-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { visit } from "@ember/test-helpers";
@@ -14,7 +14,9 @@ acceptance("Topic Discovery - Mobile", function (needs) {
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
assert.strictEqual(
- queryAll("a[data-user-card=codinghorror] img.avatar").attr("loading"),
+ query("a[data-user-card=codinghorror] img.avatar").getAttribute(
+ "loading"
+ ),
"lazy",
"it adds loading=`lazy` to topic list avatars"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/new-message-test.js b/app/assets/javascripts/discourse/tests/acceptance/new-message-test.js
index 185850c5117..81cd8ef1122 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/new-message-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/new-message-test.js
@@ -2,7 +2,7 @@ import selectKit from "discourse/tests/helpers/select-kit-helper";
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { visit } from "@ember/test-helpers";
@@ -27,12 +27,12 @@ acceptance("New Message - Authenticated", function (needs) {
assert.ok(exists(".composer-fields"), "it opens composer");
assert.strictEqual(
- queryAll("#reply-title").val().trim(),
+ query("#reply-title").value.trim(),
"message title",
"it pre-fills message title"
);
assert.strictEqual(
- queryAll(".d-editor-input").val().trim(),
+ query(".d-editor-input").value.trim(),
"message body",
"it pre-fills message body"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/new-topic-test.js b/app/assets/javascripts/discourse/tests/acceptance/new-topic-test.js
index 311a91837d3..18daaab0a5a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/new-topic-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/new-topic-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
@@ -24,12 +24,12 @@ acceptance("New Topic - Authenticated", function (needs) {
assert.ok(exists(".composer-fields"), "it opens composer");
assert.strictEqual(
- queryAll("#reply-title").val().trim(),
+ query("#reply-title").value.trim(),
"topic title",
"it pre-fills topic title"
);
assert.strictEqual(
- queryAll(".d-editor-input").val().trim(),
+ query(".d-editor-input").value.trim(),
"topic body",
"it pre-fills topic body"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/password-reset-test.js b/app/assets/javascripts/discourse/tests/acceptance/password-reset-test.js
index 9ddee1bee92..ce8f1069e8e 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/password-reset-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/password-reset-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import DiscourseURL from "discourse/lib/url";
@@ -73,9 +73,9 @@ acceptance("Password Reset", function (needs) {
await fillIn(".password-reset input", "123");
assert.ok(exists(".password-reset .tip.bad"), "input is not valid");
assert.ok(
- queryAll(".password-reset .tip.bad")
- .html()
- .indexOf(I18n.t("user.password.too_short")) > -1,
+ query(".password-reset .tip.bad").innerHTML.includes(
+ I18n.t("user.password.too_short")
+ ),
"password too short"
);
@@ -83,9 +83,9 @@ acceptance("Password Reset", function (needs) {
await click(".password-reset form button");
assert.ok(exists(".password-reset .tip.bad"), "input is not valid");
assert.ok(
- queryAll(".password-reset .tip.bad")
- .html()
- .indexOf("is the name of your cat") > -1,
+ query(".password-reset .tip.bad").innerHTML.includes(
+ "is the name of your cat"
+ ),
"server validation error message shows"
);
@@ -112,7 +112,7 @@ acceptance("Password Reset", function (needs) {
assert.ok(exists(".alert-error"), "shows 2 factor error");
assert.ok(
- queryAll(".alert-error").html().indexOf("invalid token") > -1,
+ query(".alert-error").innerHTML.includes("invalid token"),
"shows server validation error message"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/plugin-keyboard-shortcut-test.js b/app/assets/javascripts/discourse/tests/acceptance/plugin-keyboard-shortcut-test.js
index fe8811ab7dd..d6512769d29 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/plugin-keyboard-shortcut-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/plugin-keyboard-shortcut-test.js
@@ -18,17 +18,17 @@ acceptance("Plugin Keyboard Shortcuts - Logged In", function (needs) {
withPluginApi("0.8.38", (api) => {
api.addKeyboardShortcut("]", () => {
- $("#qunit-fixture").html(
- "Test adding plugin shortcut
"
- );
+ document.querySelector(
+ "#qunit-fixture"
+ ).innerHTML = `Test adding plugin shortcut
`;
});
});
await visit("/t/this-is-a-test-topic/9");
await triggerKeyEvent(document, "keypress", "]".charCodeAt(0));
- assert.strictEqual(
- $("#added-element").length,
- 1,
+
+ assert.ok(
+ document.querySelector("#added-element"),
"the keyboard shortcut callback fires successfully"
);
});
@@ -70,6 +70,7 @@ acceptance("Plugin Keyboard Shortcuts - Anonymous", function () {
});
await visit("/");
await triggerKeyEvent(document, "keypress", "?".charCodeAt(0));
+
assert.ok(exists(".shortcut-category-new_category"));
assert.strictEqual(count(".shortcut-category-new_category li"), 1);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/post-controls-test.js b/app/assets/javascripts/discourse/tests/acceptance/post-controls-test.js
index 8acc304c605..ac7f357eefb 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/post-controls-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/post-controls-test.js
@@ -41,9 +41,15 @@ acceptance("Post controls", function () {
I18n.t("post.actions.people.sr_post_likers_list_description"),
"likes container has aria-label"
);
- const likesAvatars = Array.from(
- likesContainer.querySelectorAll("a.trigger-user-card")
+ assert.equal(
+ likesContainer
+ .querySelector(".list-description")
+ .getAttribute("aria-hidden"),
+ "true",
+ "list description is aria-hidden"
);
+
+ const likesAvatars = likesContainer.querySelectorAll("a.trigger-user-card");
assert.ok(likesAvatars.length > 0, "avatars are rendered");
likesAvatars.forEach((avatar) => {
assert.equal(
@@ -57,13 +63,6 @@ acceptance("Post controls", function () {
"avatars have listitem role"
);
});
- assert.equal(
- likesContainer
- .querySelector(".list-description")
- .getAttribute("aria-hidden"),
- "true",
- "list description is aria-hidden"
- );
});
test("accessibility of the embedded replies below the post", async function (assert) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/preferences-test.js b/app/assets/javascripts/discourse/tests/acceptance/preferences-test.js
index e7426d4cce9..84125f6bddd 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/preferences-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/preferences-test.js
@@ -240,7 +240,7 @@ acceptance("User Preferences", function (needs) {
await click(".add-security-key");
assert.ok(
- query(".alert-error").innerHTML.indexOf("provide a name") > -1,
+ query(".alert-error").innerHTML.includes("provide a name"),
"shows name missing error message"
);
}
diff --git a/app/assets/javascripts/discourse/tests/acceptance/reports-test.js b/app/assets/javascripts/discourse/tests/acceptance/reports-test.js
index 38d766f14cb..4189c8add2c 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/reports-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/reports-test.js
@@ -1,4 +1,9 @@
-import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
+import {
+ acceptance,
+ count,
+ exists,
+ query,
+} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { visit } from "@ember/test-helpers";
@@ -8,17 +13,17 @@ acceptance("Reports", function (needs) {
test("Visit reports page", async function (assert) {
await visit("/admin/reports");
- assert.strictEqual($(".reports-list .report").length, 1);
+ assert.strictEqual(count(".reports-list .report"), 1);
- const $report = $(".reports-list .report:first-child");
+ const report = query(".reports-list .report:first-child");
assert.strictEqual(
- $report.find(".report-title").html().trim(),
+ report.querySelector(".report-title").innerHTML.trim(),
"My report"
);
assert.strictEqual(
- $report.find(".report-description").html().trim(),
+ report.querySelector(".report-description").innerHTML.trim(),
"List of my activities"
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/search-full-test.js b/app/assets/javascripts/discourse/tests/acceptance/search-full-test.js
index a133d104e1b..7dca56837ce 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/search-full-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/search-full-test.js
@@ -2,7 +2,7 @@ import {
acceptance,
count,
exists,
- queryAll,
+ query,
selectDate,
visible,
} from "discourse/tests/helpers/qunit-helpers";
@@ -112,7 +112,10 @@ acceptance("Search - Full Page", function (needs) {
test("perform various searches", async function (assert) {
await visit("/search");
- assert.ok($("body.search-page").length, "has body class");
+ assert.ok(
+ document.body.classList.contains("search-page"),
+ "has body class"
+ );
assert.ok(exists(".search-container"), "has container class");
assert.ok(exists(".search-query"));
assert.ok(!exists(".fps-topic"));
@@ -177,7 +180,7 @@ acceptance("Search - Full Page", function (needs) {
'has "faq" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none #faq",
'has updated search term to "none #faq"'
);
@@ -201,7 +204,7 @@ acceptance("Search - Full Page", function (needs) {
'has "快乐的" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none category:240",
'has updated search term to "none category:240"'
);
@@ -217,7 +220,7 @@ acceptance("Search - Full Page", function (needs) {
'has "in title" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none in:title",
'has updated search term to "none in:title"'
);
@@ -240,7 +243,7 @@ acceptance("Search - Full Page", function (needs) {
'has "I liked" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none in:likes",
'has updated search term to "none in:likes"'
);
@@ -257,7 +260,7 @@ acceptance("Search - Full Page", function (needs) {
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none in:messages",
'has updated search term to "none in:messages"'
);
@@ -281,7 +284,7 @@ acceptance("Search - Full Page", function (needs) {
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none in:seen",
"it should update the search term"
);
@@ -310,7 +313,7 @@ acceptance("Search - Full Page", function (needs) {
'has "I bookmarked" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none in:bookmarks",
'has updated search term to "none in:bookmarks"'
);
@@ -334,7 +337,7 @@ acceptance("Search - Full Page", function (needs) {
'has "are closed" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none status:closed",
'has updated search term to "none status:closed"'
);
@@ -376,7 +379,7 @@ acceptance("Search - Full Page", function (needs) {
await visit("/search?expanded=true&q=after:2018-08-22");
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"after:2018-08-22",
"it should update the search term correctly"
);
@@ -400,7 +403,7 @@ acceptance("Search - Full Page", function (needs) {
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none after:2016-10-05",
'has updated search term to "none after:2016-10-05"'
);
@@ -413,14 +416,12 @@ acceptance("Search - Full Page", function (needs) {
await fillIn("#search-min-post-count", "5");
assert.strictEqual(
- queryAll(
- ".search-advanced-additional-options #search-min-post-count"
- ).val(),
+ query(".search-advanced-additional-options #search-min-post-count").value,
"5",
'has "5" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none min_posts:5",
'has updated search term to "none min_posts:5"'
);
@@ -433,14 +434,12 @@ acceptance("Search - Full Page", function (needs) {
await fillIn("#search-max-post-count", "5");
assert.strictEqual(
- queryAll(
- ".search-advanced-additional-options #search-max-post-count"
- ).val(),
+ query(".search-advanced-additional-options #search-max-post-count").value,
"5",
'has "5" populated'
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"none max_posts:5",
'has updated search term to "none max_posts:5"'
);
@@ -456,7 +455,7 @@ acceptance("Search - Full Page", function (needs) {
);
assert.strictEqual(
- queryAll(".search-query").val(),
+ query(".search-query").value,
"in:likes",
'has updated search term to "in:likes"'
);
@@ -583,11 +582,11 @@ acceptance("Search - Full Page", function (needs) {
await fillIn(".search-query", "discourse");
await click(".search-cta");
- assert.equal(queryAll(".visited").length, 0);
+ assert.equal(count(".visited"), 0);
await fillIn(".search-query", "discourse visited");
await click(".search-cta");
- assert.equal(queryAll(".visited").length, 1);
+ assert.equal(count(".visited"), 1);
});
test("result link click tracking is invoked", async function (assert) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/search-mobile-test.js b/app/assets/javascripts/discourse/tests/acceptance/search-mobile-test.js
index b27985a0da1..2452d1ea8b6 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/search-mobile-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/search-mobile-test.js
@@ -2,7 +2,7 @@ import {
acceptance,
count,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
@@ -42,7 +42,7 @@ acceptance("Search - Mobile", function (needs) {
await click("#search-button");
assert.strictEqual(
- queryAll("input.full-page-search").val(),
+ query("input.full-page-search").value,
"discourse",
"it does not reset input when hitting search icon again"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/share-topic-test.js b/app/assets/javascripts/discourse/tests/acceptance/share-topic-test.js
index c18f96508d9..be66565f7a4 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/share-topic-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/share-topic-test.js
@@ -5,7 +5,6 @@ import {
acceptance,
exists,
query,
- queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
@@ -45,9 +44,9 @@ acceptance("Share and Invite modal", function (needs) {
);
assert.ok(
- queryAll("input.invite-link")
- .val()
- .includes("/t/internationalization-localization/280?u=eviltrout"),
+ query("input.invite-link").value.includes(
+ "/t/internationalization-localization/280?u=eviltrout"
+ ),
"it shows the topic sharing url"
);
@@ -135,7 +134,7 @@ acceptance("Share url with badges disabled - desktop", function (needs) {
await click("#topic-footer-button-share-and-invite");
assert.notOk(
- queryAll("input.invite-link").val().includes("?u=eviltrout"),
+ query("input.invite-link").value.includes("?u=eviltrout"),
"it doesn't add the username param when badges are disabled"
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-categories-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-categories-section-test.js
index e771afdc213..0552c9d149c 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-categories-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-categories-section-test.js
@@ -1,13 +1,11 @@
import { test } from "qunit";
-
import { click, currentURL, settled, visit } from "@ember/test-helpers";
-
import {
acceptance,
+ count,
exists,
publishToMessageBus,
query,
- queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import Site from "discourse/models/site";
@@ -39,7 +37,7 @@ acceptance(
await visit("/");
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link").length,
+ count(".sidebar-section-categories .sidebar-section-link"),
1,
"there should only be one section link under the section"
);
@@ -161,7 +159,7 @@ acceptance("Sidebar - Categories Section", function (needs) {
await visit("/");
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link").length,
+ count(".sidebar-section-categories .sidebar-section-link"),
2,
"there should only be two section link under the section"
);
@@ -186,8 +184,7 @@ acceptance("Sidebar - Categories Section", function (needs) {
);
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-categories .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -206,8 +203,7 @@ acceptance("Sidebar - Categories Section", function (needs) {
);
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-categories .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -224,8 +220,7 @@ acceptance("Sidebar - Categories Section", function (needs) {
await visit(`/c/${category1.slug}/${category1.id}/l/new`);
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-categories .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -242,8 +237,7 @@ acceptance("Sidebar - Categories Section", function (needs) {
await visit(`/c/${category1.slug}/${category1.id}/l/unread`);
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-categories .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -260,8 +254,7 @@ acceptance("Sidebar - Categories Section", function (needs) {
await visit(`/c/${category1.slug}/${category1.id}/l/top`);
assert.strictEqual(
- queryAll(".sidebar-section-categories .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-categories .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-messages-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-messages-section-test.js
index 4d6770a665d..bdbec2db140 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-messages-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-messages-section-test.js
@@ -1,14 +1,12 @@
import { test } from "qunit";
import I18n from "I18n";
-
import { click, currentURL, settled, visit } from "@ember/test-helpers";
-
import {
acceptance,
+ count,
exists,
publishToMessageBus,
query,
- queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import { NotificationLevels } from "discourse/lib/notification-levels";
@@ -71,7 +69,6 @@ acceptance(
test("clicking on section header button", async function (assert) {
await visit("/");
-
await click(".sidebar-section-messages .sidebar-section-header-button");
assert.ok(
@@ -87,7 +84,7 @@ acceptance(
assert.strictEqual(
currentURL(),
`/u/eviltrout/messages`,
- "it should transistion to the user's messages"
+ "it should transition to the user's messages"
);
});
@@ -102,7 +99,7 @@ acceptance(
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link").length,
+ count(".sidebar-section-messages .sidebar-section-link"),
1,
"only displays the personal message inbox link"
);
@@ -119,7 +116,7 @@ acceptance(
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link").length,
+ count(".sidebar-section-messages .sidebar-section-link"),
5,
"expands and displays the links for personal messages"
);
@@ -144,8 +141,7 @@ acceptance(
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.active"),
2,
"only two links are marked as active in the sidebar"
);
@@ -203,14 +199,13 @@ acceptance(
await visit("/u/eviltrout/messages/group/GrOuP1");
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link").length,
+ count(".sidebar-section-messages .sidebar-section-link"),
6,
"expands and displays the links for group1 group messages"
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.group1")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.group1"),
4,
"expands the links for group1 group messages"
);
@@ -220,15 +215,13 @@ acceptance(
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.group1")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.group1"),
1,
"collapses the links for group1 group messages"
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.group3")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.group3"),
4,
"expands the links for group3 group messages"
);
@@ -270,8 +263,7 @@ acceptance(
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.active")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.active"),
2,
"only two links are marked as active in the sidebar"
);
@@ -305,22 +297,21 @@ acceptance(
await visit("/t/130");
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link").length,
+ count(".sidebar-section-messages .sidebar-section-link"),
5,
"5 section links are displayed"
);
assert.strictEqual(
- queryAll(
+ count(
".sidebar-section-messages .sidebar-section-link.personal-messages"
- ).length,
+ ),
1,
"personal messages inbox filter links are not shown"
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.foo_group")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.foo_group"),
4,
"foo_group messages inbox filter links are shown"
);
@@ -339,22 +330,21 @@ acceptance(
await visit("/t/34");
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link").length,
+ count(".sidebar-section-messages .sidebar-section-link"),
6,
"6 section links are displayed"
);
assert.strictEqual(
- queryAll(
+ count(
".sidebar-section-messages .sidebar-section-link.personal-messages"
- ).length,
+ ),
5,
"personal messages inbox filter links are shown"
);
assert.strictEqual(
- queryAll(".sidebar-section-messages .sidebar-section-link.foo_group")
- .length,
+ count(".sidebar-section-messages .sidebar-section-link.foo_group"),
1,
"foo_group messages inbox filter links are not shown"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-mobile-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-mobile-test.js
index 8c06a9e7d27..738592bf05e 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-mobile-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-mobile-test.js
@@ -1,5 +1,4 @@
import { test } from "qunit";
-
import { click, visit } from "@ember/test-helpers";
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-tags-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-tags-section-test.js
index 2b545979c21..8743ea4443c 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-tags-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-tags-section-test.js
@@ -1,14 +1,12 @@
import I18n from "I18n";
import { test } from "qunit";
-
import { click, currentURL, settled, visit } from "@ember/test-helpers";
-
import {
acceptance,
+ count,
exists,
publishToMessageBus,
query,
- queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import discoveryFixture from "discourse/tests/fixtures/discovery-fixtures";
@@ -104,7 +102,7 @@ acceptance("Sidebar - Tags section", function (needs) {
await visit("/");
assert.strictEqual(
- queryAll(".sidebar-section-tags .sidebar-section-link").length,
+ count(".sidebar-section-tags .sidebar-section-link"),
3,
"3 section links under the section"
);
@@ -136,7 +134,7 @@ acceptance("Sidebar - Tags section", function (needs) {
);
assert.strictEqual(
- queryAll(".sidebar-section-tags .sidebar-section-link.active").length,
+ count(".sidebar-section-tags .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -155,7 +153,7 @@ acceptance("Sidebar - Tags section", function (needs) {
);
assert.strictEqual(
- queryAll(".sidebar-section-tags .sidebar-section-link.active").length,
+ count(".sidebar-section-tags .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -170,7 +168,7 @@ acceptance("Sidebar - Tags section", function (needs) {
await visit(`/tag/tag1/l/top`);
assert.strictEqual(
- queryAll(".sidebar-section-tags .sidebar-section-link.active").length,
+ count(".sidebar-section-tags .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -185,7 +183,7 @@ acceptance("Sidebar - Tags section", function (needs) {
await visit(`/tag/tag1/l/new`);
assert.strictEqual(
- queryAll(".sidebar-section-tags .sidebar-section-link.active").length,
+ count(".sidebar-section-tags .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -200,7 +198,7 @@ acceptance("Sidebar - Tags section", function (needs) {
await visit(`/tag/tag1/l/unread`);
assert.strictEqual(
- queryAll(".sidebar-section-tags .sidebar-section-link.active").length,
+ count(".sidebar-section-tags .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js
index 7f74dc66738..c324ac0e8bc 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js
@@ -1,5 +1,4 @@
import { test } from "qunit";
-
import { click, visit } from "@ember/test-helpers";
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
@@ -8,9 +7,8 @@ acceptance("Sidebar - Anon User", function () {
test("sidebar is not displayed", async function (assert) {
await visit("/");
- assert.strictEqual(
- document.querySelectorAll("body.has-sidebar-page").length,
- 0,
+ assert.ok(
+ !document.body.classList.contains("has-sidebar-page"),
"does not add sidebar utility class to body"
);
@@ -24,9 +22,8 @@ acceptance("Sidebar - User with sidebar disabled", function (needs) {
test("sidebar is not displayed", async function (assert) {
await visit("/");
- assert.strictEqual(
- document.querySelectorAll("body.has-sidebar-page").length,
- 0,
+ assert.ok(
+ !document.body.classList.contains("has-sidebar-page"),
"does not add sidebar utility class to body"
);
@@ -40,9 +37,8 @@ acceptance("Sidebar - User with sidebar enabled", function (needs) {
test("hiding and displaying sidebar", async function (assert) {
await visit("/");
- assert.strictEqual(
- document.querySelectorAll("body.has-sidebar-page").length,
- 1,
+ assert.ok(
+ document.body.classList.contains("has-sidebar-page"),
"adds sidebar utility class to body"
);
@@ -50,9 +46,8 @@ acceptance("Sidebar - User with sidebar enabled", function (needs) {
await click(".header-sidebar-toggle .btn");
- assert.strictEqual(
- document.querySelectorAll("body.has-sidebar-page").length,
- 0,
+ assert.ok(
+ !document.body.classList.contains("has-sidebar-page"),
"removes sidebar utility class to body"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-topics-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-topics-section-test.js
index 3d6eedfd48d..f393a7d5eee 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-topics-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-topics-section-test.js
@@ -1,14 +1,12 @@
import { test } from "qunit";
-
import { click, currentURL, settled, visit } from "@ember/test-helpers";
-
import {
acceptance,
+ count,
exists,
loggedInUser,
publishToMessageBus,
query,
- queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import topicFixtures from "discourse/tests/fixtures/discovery-fixtures";
import { cloneJSON } from "discourse-common/lib/object";
@@ -88,11 +86,11 @@ acceptance("Sidebar - Topics Section", function (needs) {
assert.strictEqual(
currentURL(),
"/latest",
- "it should transistion to the homepage"
+ "it should transition to the homepage"
);
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -110,11 +108,11 @@ acceptance("Sidebar - Topics Section", function (needs) {
assert.strictEqual(
currentURL(),
"/latest",
- "it should transistion to the latest page"
+ "it should transition to the latest page"
);
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -132,11 +130,11 @@ acceptance("Sidebar - Topics Section", function (needs) {
assert.strictEqual(
currentURL(),
"/latest?f=tracked",
- "it should transistion to the tracked url"
+ "it should transition to the tracked url"
);
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -154,11 +152,11 @@ acceptance("Sidebar - Topics Section", function (needs) {
assert.strictEqual(
currentURL(),
`/u/${loggedInUser().username}/activity/bookmarks`,
- "it should transistion to the bookmarked url"
+ "it should transition to the bookmarked url"
);
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -176,11 +174,11 @@ acceptance("Sidebar - Topics Section", function (needs) {
assert.strictEqual(
currentURL(),
`/u/${loggedInUser().username}/activity`,
- "it should transistion to the user's activity url"
+ "it should transition to the user's activity url"
);
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -212,11 +210,11 @@ acceptance("Sidebar - Topics Section", function (needs) {
assert.strictEqual(
currentURL(),
`/u/${loggedInUser().username}/activity/drafts`,
- "it transistions to the user's activity drafts url"
+ "it transitions to the user's activity drafts url"
);
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -238,7 +236,7 @@ acceptance("Sidebar - Topics Section", function (needs) {
await visit("/top");
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -253,7 +251,7 @@ acceptance("Sidebar - Topics Section", function (needs) {
await visit("/unread");
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -268,7 +266,7 @@ acceptance("Sidebar - Topics Section", function (needs) {
await visit("/new");
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -429,7 +427,7 @@ acceptance("Sidebar - Topics Section", function (needs) {
await visit("/top?f=tracked");
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -444,7 +442,7 @@ acceptance("Sidebar - Topics Section", function (needs) {
await visit("/unread?f=tracked");
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
@@ -459,7 +457,7 @@ acceptance("Sidebar - Topics Section", function (needs) {
await visit("/new?f=tracked");
assert.strictEqual(
- queryAll(".sidebar-section-topics .sidebar-section-link.active").length,
+ count(".sidebar-section-topics .sidebar-section-link.active"),
1,
"only one link is marked as active"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/static-test.js b/app/assets/javascripts/discourse/tests/acceptance/static-test.js
index 4071f1b6204..92a7125128b 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/static-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/static-test.js
@@ -5,19 +5,31 @@ import { test } from "qunit";
acceptance("Static", function () {
test("Static Pages", async function (assert) {
await visit("/faq");
- assert.ok($("body.static-faq").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("static-faq"),
+ "has the body class"
+ );
assert.ok(exists(".body-page"), "The content is present");
await visit("/guidelines");
- assert.ok($("body.static-guidelines").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("static-guidelines"),
+ "has the body class"
+ );
assert.ok(exists(".body-page"), "The content is present");
await visit("/tos");
- assert.ok($("body.static-tos").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("static-tos"),
+ "has the body class"
+ );
assert.ok(exists(".body-page"), "The content is present");
await visit("/privacy");
- assert.ok($("body.static-privacy").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("static-privacy"),
+ "has the body class"
+ );
assert.ok(exists(".body-page"), "The content is present");
await visit("/login");
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-bulk-actions-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-bulk-actions-test.js
index dc41baeeb72..e929567609d 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-bulk-actions-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-bulk-actions-test.js
@@ -1,6 +1,8 @@
import {
acceptance,
+ count,
invisible,
+ query,
queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
@@ -30,82 +32,82 @@ acceptance("Topic - Bulk Actions", function (needs) {
await click(".bulk-select-actions");
assert.ok(
- queryAll("#discourse-modal-title")
- .html()
- .includes(I18n.t("topics.bulk.actions")),
+ query("#discourse-modal-title").innerHTML.includes(
+ I18n.t("topics.bulk.actions")
+ ),
"it opens bulk-select modal"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.change_category")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.change_category")
+ ),
"it shows an option to change category"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.close_topics")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.close_topics")
+ ),
"it shows an option to close topics"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.archive_topics")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.archive_topics")
+ ),
"it shows an option to archive topics"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.notification_level")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.notification_level")
+ ),
"it shows an option to update notification level"
);
assert.ok(
- queryAll(".bulk-buttons").html().includes(I18n.t("topics.bulk.defer")),
+ query(".bulk-buttons").innerHTML.includes(I18n.t("topics.bulk.defer")),
"it shows an option to reset read"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.unlist_topics")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.unlist_topics")
+ ),
"it shows an option to unlist topics"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.reset_bump_dates")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.reset_bump_dates")
+ ),
"it shows an option to reset bump dates"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.change_tags")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.change_tags")
+ ),
"it shows an option to replace tags"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.append_tags")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.append_tags")
+ ),
"it shows an option to append tags"
);
assert.ok(
- queryAll(".bulk-buttons")
- .html()
- .includes(I18n.t("topics.bulk.remove_tags")),
+ query(".bulk-buttons").innerHTML.includes(
+ I18n.t("topics.bulk.remove_tags")
+ ),
"it shows an option to remove all tags"
);
assert.ok(
- queryAll(".bulk-buttons").html().includes(I18n.t("topics.bulk.delete")),
+ query(".bulk-buttons").innerHTML.includes(I18n.t("topics.bulk.delete")),
"it shows an option to delete topics"
);
});
@@ -136,8 +138,8 @@ acceptance("Topic - Bulk Actions", function (needs) {
await triggerEvent(queryAll("input.bulk-select")[3], "click", {
shiftKey: true,
});
- assert.equal(
- queryAll("input.bulk-select:checked").length,
+ assert.strictEqual(
+ count("input.bulk-select:checked"),
4,
"Shift click selects a range"
);
@@ -148,8 +150,8 @@ acceptance("Topic - Bulk Actions", function (needs) {
await triggerEvent(queryAll("input.bulk-select")[1], "click", {
shiftKey: true,
});
- assert.equal(
- queryAll("input.bulk-select:checked").length,
+ assert.strictEqual(
+ count("input.bulk-select:checked"),
5,
"Bottom-up Shift click range selection works"
);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js
index 0cb9b0687ab..63c1bcf397e 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js
@@ -22,7 +22,7 @@ acceptance("Topic Discovery", function (needs) {
test("Visit Discovery Pages", async function (assert) {
await visit("/");
assert.ok(
- document.querySelectorAll("body.navigation-topics").length,
+ document.body.classList.contains("navigation-topics"),
"has the default navigation"
);
assert.ok(exists(".topic-list"), "The list of topics was rendered");
@@ -45,28 +45,28 @@ acceptance("Topic Discovery", function (needs) {
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
assert.ok(!exists(".category-list"), "doesn't render subcategories");
assert.ok(
- document.querySelectorAll("body.category-bug").length,
+ document.body.classList.contains("category-bug"),
"has a custom css class for the category id on the body"
);
await visit("/categories");
assert.ok(
- document.querySelectorAll("body.navigation-categories").length,
+ document.body.classList.contains("navigation-categories"),
"has the body class"
);
assert.ok(
- document.querySelectorAll("body.category-bug").length === 0,
+ !document.body.classList.contains("category-bug"),
"removes the custom category class"
);
assert.ok(exists(".category"), "has a list of categories");
assert.ok(
- document.querySelectorAll("body.categories-list").length,
+ document.body.classList.contains("categories-list"),
"has a custom class to indicate categories"
);
await visit("/top");
assert.ok(
- document.querySelectorAll("body.categories-list").length === 0,
+ !document.body.classList.contains("categories-list"),
"removes the `categories-list` class"
);
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js
index 6c9c7bb9c25..e761909e912 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js
@@ -2,6 +2,7 @@ import {
acceptance,
chromeTest,
exists,
+ query,
queryAll,
selectText,
} from "discourse/tests/helpers/qunit-helpers";
@@ -55,7 +56,7 @@ acceptance("Topic - Quote button - logged in", function (needs) {
await click(".insert-quote");
assert.strictEqual(
- queryAll(".d-editor-input").val().trim(),
+ query(".d-editor-input").value.trim(),
'[quote="group_moderator, post:3, topic:2480"]\nhttps://example.com/57350945\n[/quote]',
"quote only contains a link"
);
@@ -135,7 +136,7 @@ acceptance("Topic - Quote button - keyboard shortcut", function (needs) {
assert.ok(exists(".d-editor-input"), "the editor is open");
assert.ok(
- queryAll(".d-editor-input").val().includes("Any plans to support"),
+ query(".d-editor-input").value.includes("Any plans to support"),
"editor includes selected text"
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-anonymous-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-anonymous-test.js
index e6696e68a05..a4e42661168 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-anonymous-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-anonymous-test.js
@@ -5,7 +5,11 @@ import { test } from "qunit";
acceptance("User Anonymous", function () {
test("Root URL", async function (assert) {
await visit("/u/eviltrout");
- assert.ok($("body.user-summary-page").length, "has the body class");
+
+ assert.ok(
+ document.body.classList.contains("user-summary-page"),
+ "has the body class"
+ );
assert.strictEqual(
currentRouteName(),
"user.summary",
@@ -15,7 +19,10 @@ acceptance("User Anonymous", function () {
test("Filters", async function (assert) {
await visit("/u/eviltrout/activity");
- assert.ok($("body.user-activity-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("user-activity-page"),
+ "has the body class"
+ );
assert.ok(exists(".user-main .about"), "it has the about section");
assert.ok(exists(".user-stream .item"), "it has stream items");
@@ -32,7 +39,11 @@ acceptance("User Anonymous", function () {
test("Badges", async function (assert) {
await visit("/u/eviltrout/badges");
- assert.ok($("body.user-badges-page").length, "has the body class");
+
+ assert.ok(
+ document.body.classList.contains("user-badges-page"),
+ "has the body class"
+ );
assert.ok(exists(".badge-group-list .badge-card"), "shows a badge");
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js
index 4c379d80b9e..691ecd9ef59 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js
@@ -1,7 +1,7 @@
import {
acceptance,
+ count,
exists,
- queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { click, visit } from "@ember/test-helpers";
import { cloneJSON } from "discourse-common/lib/object";
@@ -60,13 +60,13 @@ acceptance("User's bookmarks - reminder", function (needs) {
test("bookmarks with reminders have a clear reminder option", async function (assert) {
await visit("/u/eviltrout/activity/bookmarks");
- assert.strictEqual(queryAll(".bookmark-reminder").length, 2);
+ assert.strictEqual(count(".bookmark-reminder"), 2);
const dropdown = selectKit(".bookmark-actions-dropdown");
await dropdown.expand();
await dropdown.selectRowByValue("clear_reminder");
- assert.strictEqual(queryAll(".bookmark-reminder").length, 1);
+ assert.strictEqual(count(".bookmark-reminder"), 1);
});
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-drafts-stream-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-drafts-stream-test.js
index a0602c737a9..2ea3fb5b54c 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-drafts-stream-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-drafts-stream-test.js
@@ -4,7 +4,6 @@ import {
exists,
normalizeHtml,
query,
- queryAll,
visible,
} from "discourse/tests/helpers/qunit-helpers";
import { click, visit } from "@ember/test-helpers";
@@ -42,7 +41,7 @@ acceptance("User Drafts", function (needs) {
await click(".user-stream-item .resume-draft");
assert.strictEqual(
- queryAll(".d-editor-input").val().trim(),
+ query(".d-editor-input").value.trim(),
"A fun new topic for testing drafts."
);
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-interface-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-interface-test.js
index 3737937f10c..50cf773d120 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-interface-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-interface-test.js
@@ -2,7 +2,7 @@ import {
acceptance,
count,
exists,
- queryAll,
+ query,
} from "discourse/tests/helpers/qunit-helpers";
import { click, visit } from "@ember/test-helpers";
import cookie, { removeCookie } from "discourse/lib/cookie";
@@ -22,7 +22,7 @@ acceptance("User Preferences - Interface", function (needs) {
assert.ok(!exists(".saved"), "it hasn't been saved yet");
await click(".save-changes");
assert.ok(exists(".saved"), "it displays the saved message");
- queryAll(".saved").remove();
+ query(".saved").remove();
};
await visit("/u/eviltrout/preferences/interface");
@@ -187,8 +187,8 @@ acceptance(
await visit("/u/eviltrout/preferences/interface");
assert.ok(exists(".light-color-scheme"), "has light scheme dropdown");
assert.strictEqual(
- queryAll(".light-color-scheme .selected-name").data("value"),
- session.userColorSchemeId,
+ query(".light-color-scheme .selected-name").dataset.value,
+ session.userColorSchemeId.toString(),
"user's selected color scheme is selected value in light scheme dropdown"
);
});
@@ -237,15 +237,15 @@ acceptance(
assert.ok(!exists(".saved"), "it hasn't been saved yet");
await click(".save-changes");
assert.ok(exists(".saved"), "it displays the saved message");
- queryAll(".saved").remove();
+ query(".saved").remove();
};
await visit("/u/eviltrout/preferences/interface");
assert.ok(exists(".light-color-scheme"), "has regular dropdown");
assert.ok(exists(".dark-color-scheme"), "has dark color scheme dropdown");
assert.strictEqual(
- queryAll(".dark-color-scheme .selected-name").data("value"),
- session.userDarkSchemeId,
+ query(".dark-color-scheme .selected-name").dataset.value,
+ session.userDarkSchemeId.toString(),
"sets site default as selected dark scheme"
);
assert.ok(
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-test.js
index 214229c25ca..e8ae776aa2a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-test.js
@@ -43,12 +43,18 @@ acceptance("User Routes", function (needs) {
test("Invites", async function (assert) {
await visit("/u/eviltrout/invited/pending");
- assert.ok($("body.user-invites-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("user-invites-page"),
+ "has the body class"
+ );
});
test("Notifications", async function (assert) {
await visit("/u/eviltrout/notifications");
- assert.ok($("body.user-notifications-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("user-notifications-page"),
+ "has the body class"
+ );
const $links = queryAll(".item.notification a");
@@ -75,7 +81,10 @@ acceptance("User Routes", function (needs) {
test("Root URL - Viewing Self", async function (assert) {
await visit("/u/eviltrout");
- assert.ok($("body.user-activity-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("user-activity-page"),
+ "has the body class"
+ );
assert.strictEqual(
currentRouteName(),
"userActivity.index",
@@ -209,8 +218,11 @@ acceptance("User Routes - Moderator viewing warnings", function (needs) {
test("Messages - Warnings", async function (assert) {
await visit("/u/eviltrout/messages/warnings");
- assert.ok($("body.user-messages-page").length, "has the body class");
- assert.ok($("div.alert-info").length, "has the permissions alert");
+ assert.ok(
+ document.body.classList.contains("user-messages-page"),
+ "has the body class"
+ );
+ assert.ok(exists("div.alert-info"), "has the permissions alert");
});
});
diff --git a/app/assets/javascripts/discourse/tests/acceptance/users-test.js b/app/assets/javascripts/discourse/tests/acceptance/users-test.js
index a9d65bc643a..4f6eb96d495 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/users-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/users-test.js
@@ -10,7 +10,10 @@ import { click, triggerKeyEvent, visit } from "@ember/test-helpers";
acceptance("User Directory", function () {
test("Visit Page", async function (assert) {
await visit("/u");
- assert.ok($("body.users-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("users-page"),
+ "has the body class"
+ );
assert.ok(exists(".directory table tr"), "has a list of users");
});
@@ -21,13 +24,19 @@ acceptance("User Directory", function () {
test("Visit Without Usernames", async function (assert) {
await visit("/u?exclude_usernames=system");
- assert.ok($("body.users-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("users-page"),
+ "has the body class"
+ );
assert.ok(exists(".directory table tr"), "has a list of users");
});
test("Visit With Group Filter", async function (assert) {
await visit("/u?group=trust_level_0");
- assert.ok($("body.users-page").length, "has the body class");
+ assert.ok(
+ document.body.classList.contains("users-page"),
+ "has the body class"
+ );
assert.ok(exists(".directory table tr"), "has a list of users");
});
diff --git a/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js b/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js
index a603d206758..417c412eaf2 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/d-editor-test.js
@@ -656,18 +656,14 @@ third line`
testCase(
`doesn't jump to bottom with long text`,
async function (assert, textarea) {
- let longText = "hello world.";
- for (let i = 0; i < 8; i++) {
- longText = longText + longText;
- }
- this.set("value", longText);
+ this.set("value", "hello world.".repeat(8));
- $(textarea).scrollTop(0);
+ textarea.scrollTop = 0;
textarea.selectionStart = 3;
textarea.selectionEnd = 3;
await click("button.bold");
- assert.strictEqual($(textarea).scrollTop(), 0, "it stays scrolled up");
+ assert.strictEqual(textarea.scrollTop, 0, "it stays scrolled up");
}
);
@@ -1021,7 +1017,7 @@ third line`
for (let i = 0; i < CASES.length; i++) {
const CASE = CASES[i];
// prettier-ignore
- composerTestCase(`replace-text event: ${CASE.description}`, async function( // eslint-disable-line no-loop-func
+ composerTestCase(`replace-text event: ${CASE.description}`, async function(
assert,
textarea
) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js b/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js
index 35b858ef4d5..2056cd43fe1 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js
@@ -56,9 +56,8 @@ discourseModule("Unit | Utility | category-badge", function () {
const store = createStore();
const category = store.createRecord("category", { name: "hello", id: 123 });
- assert.strictEqual(
- categoryBadgeHTML(category).indexOf("topic-count"),
- -1,
+ assert.ok(
+ !categoryBadgeHTML(category).includes("topic-count"),
"it does not include topic count by default"
);
assert.ok(
@@ -136,41 +135,21 @@ discourseModule("Unit | Utility | category-badge", function () {
});
this.siteSettings.max_category_nesting = 0;
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("baz") !== -1
- );
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("bar") === -1
- );
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("baz"));
+ assert.ok(!categoryBadgeHTML(baz, { recursive: true }).includes("bar"));
this.siteSettings.max_category_nesting = 1;
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("baz") !== -1
- );
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("bar") === -1
- );
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("baz"));
+ assert.ok(!categoryBadgeHTML(baz, { recursive: true }).includes("bar"));
this.siteSettings.max_category_nesting = 2;
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("baz") !== -1
- );
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("bar") !== -1
- );
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("foo") === -1
- );
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("baz"));
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("bar"));
+ assert.ok(!categoryBadgeHTML(baz, { recursive: true }).includes("foo"));
this.siteSettings.max_category_nesting = 3;
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("baz") !== -1
- );
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("bar") !== -1
- );
- assert.ok(
- categoryBadgeHTML(baz, { recursive: true }).indexOf("foo") !== -1
- );
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("baz"));
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("bar"));
+ assert.ok(categoryBadgeHTML(baz, { recursive: true }).includes("foo"));
});
});
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js b/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js
index be710f4207c..c69e3021cd9 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js
@@ -7,7 +7,7 @@ import { module, test } from "qunit";
module("Unit | Utility | icon-library", function () {
test("return icon markup", function (assert) {
- assert.ok(iconHTML("bars").indexOf('use href="#bars"') > -1);
+ assert.ok(iconHTML("bars").includes('use href="#bars"'));
const nodeIcon = iconNode("bars");
assert.strictEqual(nodeIcon.tagName, "svg");
@@ -19,10 +19,10 @@ module("Unit | Utility | icon-library", function () {
test("convert icon names", function (assert) {
const fa5Icon = convertIconClass("fab fa-facebook");
- assert.ok(iconHTML(fa5Icon).indexOf("fab-facebook") > -1, "FA 5 syntax");
+ assert.ok(iconHTML(fa5Icon).includes("fab-facebook"), "FA 5 syntax");
const iconC = convertIconClass(" fab fa-facebook ");
- assert.ok(iconHTML(iconC).indexOf(" ") === -1, "trims whitespace");
+ assert.ok(!iconHTML(iconC).includes(" "), "trims whitespace");
});
test("escape icon names, classes and titles", function (assert) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/oneboxer-test.js b/app/assets/javascripts/discourse/tests/unit/lib/oneboxer-test.js
index dcc6d4a2e60..3f15e065173 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/oneboxer-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/oneboxer-test.js
@@ -40,13 +40,13 @@ module("Unit | Utility | oneboxer", function () {
await loadOnebox(element);
assert.ok(
- localCache["http://somegoodurl.com"].outerHTML.indexOf(
+ localCache["http://somegoodurl.com"].outerHTML.includes(
"Yet another collaboration tool"
- ) !== -1,
+ ),
"stores the html of the onebox in a local cache"
);
assert.ok(
- loadOnebox(element).indexOf("Yet another collaboration tool") !== -1,
+ loadOnebox(element).includes("Yet another collaboration tool"),
"it returns the html from the cache"
);
});
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/search-test.js b/app/assets/javascripts/discourse/tests/unit/lib/search-test.js
index 7ac7ee75dac..d3f94fe55d6 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/search-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/search-test.js
@@ -31,9 +31,9 @@ module("Unit | Utility | search", function () {
const results = await translateResults(source);
const blurb = results.posts[0].get("blurb");
- assert.ok(blurb.indexOf("thinking.png"));
- assert.ok(blurb.indexOf('` +
otherMediaSrcs
.map((src) => {
- if (src.short_url.indexOf("mp3") > -1) {
+ if (src.short_url.includes("mp3")) {
return ``;
} else {
return ``;
diff --git a/app/assets/javascripts/discourse/tests/unit/models/report-test.js b/app/assets/javascripts/discourse/tests/unit/models/report-test.js
index e5e7706de93..4807d1691bd 100644
--- a/app/assets/javascripts/discourse/tests/unit/models/report-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/models/report-test.js
@@ -74,13 +74,13 @@ module("Unit | Model | report", function () {
test("yesterdayCountTitle with valid values", function (assert) {
const title = reportWithData([6, 8, 5, 2, 1]).get("yesterdayCountTitle");
- assert.ok(title.indexOf("+60%") !== -1);
+ assert.ok(title.includes("+60%"));
assert.ok(title.match(/Was 5/));
});
test("yesterdayCountTitle when two days ago was 0", function (assert) {
const title = reportWithData([6, 8, 0, 2, 1]).get("yesterdayCountTitle");
- assert.strictEqual(title.indexOf("%"), -1);
+ assert.ok(!title.includes("%"));
assert.ok(title.match(/Was 0/));
});
@@ -97,14 +97,14 @@ module("Unit | Model | report", function () {
report.set("prev30Days", 10);
let title = report.get("thirtyDaysCountTitle");
- assert.ok(title.indexOf("+50%") !== -1);
+ assert.ok(title.includes("+50%"));
assert.ok(title.match(/Was 10/));
report = reportWithData([5, 5, 5, 5]);
report.set("prev_period", 20);
title = report.get("thirtyDaysCountTitle");
- assert.ok(title.indexOf("-25%") !== -1);
+ assert.ok(title.includes("-25%"));
assert.ok(title.match(/Was 20/));
});
diff --git a/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js b/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js
index 173035392b9..c79036fe797 100644
--- a/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js
@@ -254,7 +254,7 @@ discourseModule("Unit | Model | topic-tracking-state", function (hooks) {
}
}
- if (topic.tags && topic.tags.indexOf("random") > -1) {
+ if (topic.tags?.includes("random")) {
if (isNew) {
randomNew += 1;
}
diff --git a/plugins/discourse-details/test/javascripts/acceptance/details-button-test.js b/plugins/discourse-details/test/javascripts/acceptance/details-button-test.js
index 1f092621040..a0897f6c422 100644
--- a/plugins/discourse-details/test/javascripts/acceptance/details-button-test.js
+++ b/plugins/discourse-details/test/javascripts/acceptance/details-button-test.js
@@ -1,8 +1,4 @@
-import {
- acceptance,
- query,
- queryAll,
-} from "discourse/tests/helpers/qunit-helpers";
+import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import I18n from "I18n";
import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer";
import selectKit from "discourse/tests/helpers/select-kit-helper";
@@ -23,7 +19,7 @@ acceptance("Details Button", function (needs) {
await popupMenu.selectRowByValue("insertDetails");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
`\n[details="${I18n.t("composer.details_title")}"]\n${I18n.t(
"composer.details_text"
)}\n[/details]\n`,
@@ -40,7 +36,7 @@ acceptance("Details Button", function (needs) {
await popupMenu.selectRowByValue("insertDetails");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
`\n[details="${I18n.t(
"composer.details_title"
)}"]\nThis is my title\n[/details]\n`,
@@ -67,7 +63,7 @@ acceptance("Details Button", function (needs) {
await popupMenu.selectRowByValue("insertDetails");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
`Before \n[details="${I18n.t(
"composer.details_title"
)}"]\nsome text in between\n[/details]\n After`,
@@ -94,7 +90,7 @@ acceptance("Details Button", function (needs) {
await popupMenu.selectRowByValue("insertDetails");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
`Before \n\n[details="${I18n.t(
"composer.details_title"
)}"]\nsome text in between\n[/details]\n\n After`,
@@ -129,7 +125,7 @@ acceptance("Details Button", function (needs) {
await popupMenu.selectRowByValue("insertDetails");
assert.strictEqual(
- queryAll(".d-editor-input").val(),
+ query(".d-editor-input").value,
`\n[details="${I18n.t(
"composer.details_title"
)}"]\n${multilineInput}\n[/details]\n`,
diff --git a/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-composer-test.js b/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-composer-test.js
index 5c54bc937a8..e9a3ff1d489 100644
--- a/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-composer-test.js
+++ b/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-composer-test.js
@@ -1,8 +1,4 @@
-import {
- acceptance,
- query,
- queryAll,
-} from "discourse/tests/helpers/qunit-helpers";
+import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { click, fillIn, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
@@ -13,9 +9,9 @@ acceptance("Local Dates - composer", function (needs) {
test("composer bbcode", async function (assert) {
const getAttr = (attr) => {
- return queryAll(
+ return query(
".d-editor-preview .discourse-local-date.cooked-date"
- ).attr(`data-${attr}`);
+ ).getAttribute(`data-${attr}`);
};
await visit("/");
diff --git a/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js b/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js
index c568cf584b6..265cf349401 100644
--- a/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js
+++ b/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js
@@ -2,7 +2,7 @@ import { cloneJSON } from "discourse-common/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
acceptance,
- queryAll,
+ query,
selectText,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
@@ -15,17 +15,17 @@ acceptance("Local Dates - quoting", function (needs) {
needs.pretender((server, helper) => {
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
const firstPost = topicResponse.post_stream.posts[0];
- firstPost.cooked += `This is a test