From e68905510d292b4e5339266b8e3a61394be0dc56 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Mon, 11 Nov 2024 13:06:12 +0100 Subject: [PATCH] DEV: Use the new `hasHtml`/`includesHtml` from qunit-dom (#29680) --- .../tests/acceptance/composer-actions-test.js | 7 +- .../acceptance/composer-messages-test.js | 58 +++--- .../tests/acceptance/composer-onebox-test.js | 28 ++- .../tests/acceptance/composer-test.js | 11 +- .../acceptance/composer-topic-links-test.js | 59 +++--- .../tests/acceptance/d-styles-test.js | 70 ++++--- .../discourse/tests/acceptance/emoji-test.js | 28 ++- .../tests/acceptance/forgot-password-test.js | 27 ++- .../acceptance/hashtag-css-generator-test.js | 15 +- ...email-and-hide-email-address-taken-test.js | 7 +- .../modal/login/login-with-email-test.js | 28 ++- .../tests/acceptance/password-reset-test.js | 31 ++- .../tests/acceptance/reports-test.js | 24 +-- .../discourse/tests/acceptance/review-test.js | 31 ++- .../tests/acceptance/topic-move-posts-test.js | 182 ++++++++---------- .../discourse/tests/acceptance/topic-test.js | 50 +++-- .../acceptance/user-drafts-stream-test.js | 21 +- .../user-preferences-account-test.js | 17 +- .../user-preferences-second-factor-test.js | 18 +- .../components/composer-editor-test.gjs | 6 +- .../integration/components/cook-text-test.js | 12 +- .../integration/components/d-editor-test.js | 26 +-- .../widgets/widget-dropdown-test.js | 4 +- .../tests/integration/helpers/d-icon-test.js | 21 +- .../tests/unit/lib/click-track-test.js | 3 +- .../tests/unit/lib/formatter-test.js | 10 +- .../tests/unit/lib/link-mentions-test.js | 5 +- .../acceptance/hashtag-css-generator-test.js | 16 +- .../components/chat-message-collapser-test.js | 31 ++- .../components/chat-message-test.js | 9 +- .../chat-modal-archive-channel-test.js | 9 +- .../chat-modal-delete-channel-test.js | 9 +- ...chat-modal-move-message-to-channel-test.js | 9 +- .../components/chat-thread-header-test.js | 9 +- .../components/chat-thread-list-item-test.js | 8 +- 35 files changed, 404 insertions(+), 495 deletions(-) diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js index c59edbab430..32ab9434718 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js @@ -481,10 +481,9 @@ acceptance("Prioritize Full Name", function (needs) { await visit("/t/short-topic-with-two-posts/54079"); await click("article#post_3 button.reply"); - assert.strictEqual( - query(".action-title .user-link").innerHTML.trim(), - "<h1>Tim Stone</h1>" - ); + assert + .dom(".action-title .user-link") + .hasHtml("<h1>Tim Stone</h1>"); }); test("Quotes use full name", async function (assert) { diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-messages-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-messages-test.js index 5f5a1098052..b0bfee3bf69 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-messages-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-messages-test.js @@ -44,13 +44,11 @@ acceptance("Composer - Messages", function (needs) { assert.dom(".composer-popup").exists("shows composer warning message"); - assert.true( - query(".composer-popup").innerHTML.includes( - I18n.t("composer.user_not_seen_in_a_while.single", { - usernames: ['@charlie'], - time_ago: "1 year ago", - }) - ), + assert.dom(".composer-popup").includesHtml( + I18n.t("composer.user_not_seen_in_a_while.single", { + usernames: ['@charlie'], + time_ago: "1 year ago", + }), "warning message has correct body" ); @@ -96,12 +94,10 @@ acceptance("Composer - Messages - Cannot see group", function (needs) { await fillIn(".d-editor-input", "Mention @staff"); assert.dom(".composer-popup").exists("shows composer warning message"); - assert.true( - query(".composer-popup").innerHTML.includes( - I18n.t("composer.cannot_see_group_mention.not_allowed", { - group: "staff", - }) - ), + assert.dom(".composer-popup").includesHtml( + I18n.t("composer.cannot_see_group_mention.not_allowed", { + group: "staff", + }), "warning message has correct body" ); }); @@ -115,13 +111,11 @@ acceptance("Composer - Messages - Cannot see group", function (needs) { await fillIn(".d-editor-input", "Mention @staff2"); assert.dom(".composer-popup").exists("shows composer warning message"); - assert.true( - query(".composer-popup").innerHTML.includes( - I18n.t("composer.cannot_see_group_mention.some_not_allowed", { - group: "staff2", - count: 10, - }) - ), + assert.dom(".composer-popup").includesHtml( + I18n.t("composer.cannot_see_group_mention.some_not_allowed", { + group: "staff2", + count: 10, + }), "warning message has correct body" ); }); @@ -237,18 +231,18 @@ acceptance("Composer - Messages - Private Messages", function (needs) { await triggerKeyEvent(".d-editor-input", "keyup", "Space"); assert.dom(".composer-popup").exists("shows composer warning message"); - assert.true( - query(".composer-popup").innerHTML.includes( - I18n.t("composer.yourself_confirm.title") - ), - "warning message has correct title" - ); - assert.true( - query(".composer-popup").innerHTML.includes( - I18n.t("composer.yourself_confirm.body") - ), - "warning message has correct body" - ); + assert + .dom(".composer-popup") + .includesHtml( + I18n.t("composer.yourself_confirm.title"), + "warning message has correct title" + ); + assert + .dom(".composer-popup") + .includesHtml( + I18n.t("composer.yourself_confirm.body"), + "warning message has correct body" + ); }); test("Does not show a warning in the composer if the message is sent to other users", async function (assert) { 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 a01e7242763..557a58633bb 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-onebox-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-onebox-test.js @@ -1,6 +1,6 @@ import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; acceptance("Composer - Onebox", function (needs) { needs.user(); @@ -29,17 +29,13 @@ http://www.example.com/has-title.html ); assert.dom(".d-editor-preview").exists(); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - ` + assert.dom(".d-editor-preview").hasHtml(`


This is another test This is a great title

http://www.example.com/no-title.html

This is another test http://www.example.com/no-title.html
This is another test This is a great title

-

- `.trim() - ); +

`); }); }); @@ -68,16 +64,18 @@ acceptance("Composer - Inline Onebox", function (needs) { await fillIn(".d-editor-input", `Test www.example.com/page`); assert.strictEqual(requestsCount, 1); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - '

Test www.example.com/page

' - ); + assert + .dom(".d-editor-preview") + .hasHtml( + '

Test www.example.com/page

' + ); await fillIn(".d-editor-input", `Test www.example.com/page Test`); assert.strictEqual(requestsCount, 1); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - '

Test www.example.com/page Test

' - ); + assert + .dom(".d-editor-preview") + .hasHtml( + '

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 e853007b50c..b6d57ed8b39 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js @@ -195,11 +195,12 @@ acceptance("Composer", function (needs) { .exists("body error is dismissed via keyboard"); await fillIn(".d-editor-input", "this is the *content* of a post"); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - "

this is the content of a post

", - "it previews content" - ); + assert + .dom(".d-editor-preview") + .hasHtml( + "

this is the content of a post

", + "previews content" + ); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("the body is now good"); 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 e9697e3ef4d..2e670aab8b5 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 @@ -14,10 +14,9 @@ acceptance("Composer topic featured links", function (needs) { await visit("/"); await click("#create-topic"); await fillIn("#reply-title", "http://www.example.com/has-title.html"); - assert.ok( - query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "it pastes the link into the body and previews it" - ); + assert + .dom(".d-editor-preview") + .includesHtml("onebox", "pastes the link into the body and previews it"); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("the body is now good"); @@ -32,10 +31,9 @@ acceptance("Composer topic featured links", function (needs) { await visit("/"); await click("#create-topic"); await fillIn("#reply-title", "http://www.example.com/no-title.html"); - assert.ok( - query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "it pastes the link into the body and previews it" - ); + assert + .dom(".d-editor-preview") + .includesHtml("onebox", "pastes the link into the body and previews it"); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("the body is now good"); @@ -61,10 +59,9 @@ acceptance("Composer topic featured links", function (needs) { await visit("/"); await click("#create-topic"); await fillIn("#reply-title", "http://www.example.com/nope-onebox.html"); - assert.ok( - query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "it pastes the link into the body and previews it" - ); + assert + .dom(".d-editor-preview") + .includesHtml("onebox", "pastes the link into the body and previews it"); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("link is pasted into body"); @@ -80,10 +77,9 @@ 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.ok( - !query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "onebox preview doesn't show" - ); + assert + .dom(".d-editor-preview") + .doesNotIncludeHtml("onebox", "onebox preview doesn't show"); assert.strictEqual( query(".d-editor-input").value.length, 0, @@ -103,10 +99,9 @@ acceptance("Composer topic featured links", function (needs) { "#reply-title", "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( - query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "it pastes the link into the body and previews it" - ); + assert + .dom(".d-editor-preview") + .includesHtml("onebox", "pastes the link into the body and previews it"); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("the body is now good"); @@ -121,10 +116,9 @@ 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.ok( - !query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "onebox preview doesn't show" - ); + assert + .dom(".d-editor-preview") + .doesNotIncludeHtml("onebox", "onebox preview doesn't show"); assert.strictEqual( query(".d-editor-input").value.length, 0, @@ -144,10 +138,9 @@ acceptance("Composer topic featured links", function (needs) { "#reply-title", "https://twitter.com/discourse/status/1357664660724482048" ); - assert.ok( - query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "it pastes the link into the body and previews it" - ); + assert + .dom(".d-editor-preview") + .includesHtml("onebox", "pastes the link into the body and previews it"); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("the body is now good"); @@ -173,10 +166,12 @@ acceptance( .dom(".d-editor-textarea-wrapper.disabled") .exists("textarea is disabled"); await fillIn("#reply-title", "http://www.example.com/has-title.html"); - assert.ok( - query(".d-editor-preview").innerHTML.trim().includes("onebox"), - "it pastes the link into the body and previews it" - ); + assert + .dom(".d-editor-preview") + .includesHtml( + "onebox", + "pastes the link into the body and previews it" + ); assert .dom(".d-editor-textarea-wrapper .popup-tip.good") .exists("the body is now good"); diff --git a/app/assets/javascripts/discourse/tests/acceptance/d-styles-test.js b/app/assets/javascripts/discourse/tests/acceptance/d-styles-test.js index 76ef8e5734c..4c65e43f529 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/d-styles-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/d-styles-test.js @@ -61,10 +61,16 @@ acceptance("DStyles - category backgrounds", function (needs) { test("CSS classes are generated", async function (assert) { await visit("/"); - const css = - "body.category-foo { background-image: url(/uploads/default/original/1X/c5c84b16ebf745ab848d1498267c541facbf1ff0.png); }\n" + - "body.category-foo-baz { background-image: url(/uploads/default/original/1X/684c104edc18a7e9cef1fa31f41215f3eec5d92b.png); }"; - assert.ok(document.querySelector("#d-styles").innerHTML.includes(css)); + assert + .dom("#d-styles") + .includesHtml( + "body.category-foo { background-image: url(/uploads/default/original/1X/c5c84b16ebf745ab848d1498267c541facbf1ff0.png); }" + ); + assert + .dom("#d-styles") + .includesHtml( + "body.category-foo-baz { background-image: url(/uploads/default/original/1X/684c104edc18a7e9cef1fa31f41215f3eec5d92b.png); }" + ); }); }); @@ -87,14 +93,15 @@ acceptance("DStyles - category backgrounds (dark)", function (needs) { test("CSS classes are generated", async function (assert) { await visit("/"); - const css = - "body.category-foo { background-image: url(/uploads/default/original/1X/c5c84b16ebf745ab848d1498267c541facbf1ff0.png); }\n" + - "body.category-foo-baz { background-image: url(/uploads/default/original/1X/684c104edc18a7e9cef1fa31f41215f3eec5d92b.png); }\n" + - "@media (prefers-color-scheme: dark) {\n" + - "body.category-bar { background-image: url(/uploads/default/original/1X/f9fdb0ad108f2aed178c40f351bbb2c7cb2571e3.png); }\n" + - "body.category-foo-baz { background-image: url(/uploads/default/original/1X/89b1a2641e91604c32b21db496be11dba7a253e6.png); }\n" + - "}"; - assert.ok(document.querySelector("#d-styles").innerHTML.includes(css)); + const css = [ + "body.category-foo { background-image: url(/uploads/default/original/1X/c5c84b16ebf745ab848d1498267c541facbf1ff0.png); }", + "body.category-foo-baz { background-image: url(/uploads/default/original/1X/684c104edc18a7e9cef1fa31f41215f3eec5d92b.png); }", + "@media (prefers-color-scheme: dark) {", + "body.category-bar { background-image: url(/uploads/default/original/1X/f9fdb0ad108f2aed178c40f351bbb2c7cb2571e3.png); }", + "body.category-foo-baz { background-image: url(/uploads/default/original/1X/89b1a2641e91604c32b21db496be11dba7a253e6.png); }", + "}", + ].join(" "); + assert.dom("#d-styles").includesHtml(css); }); }); @@ -119,11 +126,12 @@ acceptance( test("CSS classes are generated", async function (assert) { await visit("/"); - const css = - "body.category-foo { background-image: url(/uploads/default/original/1X/c5c84b16ebf745ab848d1498267c541facbf1ff0.png); }\n" + - "body.category-bar { background-image: url(/uploads/default/original/1X/f9fdb0ad108f2aed178c40f351bbb2c7cb2571e3.png); }\n" + - "body.category-foo-baz { background-image: url(/uploads/default/original/1X/89b1a2641e91604c32b21db496be11dba7a253e6.png); }"; - assert.ok(document.querySelector("#d-styles").innerHTML.includes(css)); + const css = [ + "body.category-foo { background-image: url(/uploads/default/original/1X/c5c84b16ebf745ab848d1498267c541facbf1ff0.png); }", + "body.category-bar { background-image: url(/uploads/default/original/1X/f9fdb0ad108f2aed178c40f351bbb2c7cb2571e3.png); }", + "body.category-foo-baz { background-image: url(/uploads/default/original/1X/89b1a2641e91604c32b21db496be11dba7a253e6.png); }", + ].join(" "); + assert.dom("#d-styles").includesHtml(css); }); } ); @@ -148,23 +156,25 @@ acceptance("DStyles - category badges", function (needs) { test("category CSS variables are generated", async function (assert) { await visit("/"); - const css = - ":root {\n" + - "--category-1-color: #ff0000;\n" + - "--category-2-color: #333;\n" + - "--category-4-color: #2B81AF;\n" + - "}"; - assert.ok(document.querySelector("style#d-styles").innerHTML.includes(css)); + const css = [ + ":root {", + "--category-1-color: #ff0000;", + "--category-2-color: #333;", + "--category-4-color: #2B81AF;", + "}", + ].join(" "); + assert.dom("style#d-styles").includesHtml(css); }); test("category badge CSS variables are generated", async function (assert) { await visit("/"); - const css = - '.badge-category[data-category-id="1"] { --category-badge-color: var(--category-1-color); --category-badge-text-color: #ffffff; }\n' + - '.badge-category[data-parent-category-id="1"] { --parent-category-badge-color: var(--category-1-color); }\n' + - '.badge-category[data-category-id="2"] { --category-badge-color: var(--category-2-color); --category-badge-text-color: #ffffff; }\n' + - '.badge-category[data-category-id="4"] { --category-badge-color: var(--category-4-color); --category-badge-text-color: #ffffff; }'; - assert.ok(document.querySelector("style#d-styles").innerHTML.includes(css)); + const css = [ + '.badge-category[data-category-id="1"] { --category-badge-color: var(--category-1-color); --category-badge-text-color: #ffffff; }', + '.badge-category[data-parent-category-id="1"] { --parent-category-badge-color: var(--category-1-color); }', + '.badge-category[data-category-id="2"] { --category-badge-color: var(--category-2-color); --category-badge-text-color: #ffffff; }', + '.badge-category[data-category-id="4"] { --category-badge-color: var(--category-4-color); --category-badge-text-color: #ffffff; }', + ].join(" "); + assert.dom("style#d-styles").includesHtml(css); }); }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js b/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js index da676ff0359..317e66bb8d4 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/emoji-test.js @@ -3,7 +3,6 @@ import { IMAGE_VERSION as v } from "pretty-text/emoji/version"; import { test } from "qunit"; import { acceptance, - normalizeHtml, query, simulateKey, simulateKeys, @@ -18,12 +17,11 @@ acceptance("Emoji", function (needs) { await simulateKeys(".d-editor-input", "a :blonde_wo\t"); - assert.strictEqual( - normalizeHtml(query(".d-editor-preview").innerHTML.trim()), - normalizeHtml( + assert + .dom(".d-editor-preview") + .hasHtml( `

a :blonde_woman:

` - ) - ); + ); }); test("emoji can be picked from the emoji-picker using the mouse", async function (assert) { @@ -37,12 +35,11 @@ acceptance("Emoji", function (needs) { assert.dom(".emoji-picker.opened.has-filter").exists(); await click(".emoji-picker .results img:first-of-type"); - assert.strictEqual( - normalizeHtml(query(".d-editor-preview").innerHTML.trim()), - normalizeHtml( + assert + .dom(".d-editor-preview") + .hasHtml( `

an :arrow_backward:

` - ) - ); + ); }); test("skin toned emoji is cooked properly", async function (assert) { @@ -51,12 +48,11 @@ acceptance("Emoji", function (needs) { await fillIn(".d-editor-input", "a :blonde_woman:t5:"); - assert.strictEqual( - normalizeHtml(query(".d-editor-preview").innerHTML.trim()), - normalizeHtml( + assert + .dom(".d-editor-preview") + .hasHtml( `

a :blonde_woman:t5:

` - ) - ); + ); }); needs.settings({ emoji_autocomplete_min_chars: 2 }); 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 0dde8ffe553..1f5f81a5c21 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/forgot-password-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/forgot-password-test.js @@ -1,6 +1,6 @@ import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; import I18n from "discourse-i18n"; let userFound = false; @@ -26,23 +26,21 @@ acceptance("Forgot password", function (needs) { await fillIn("#username-or-email", "someuser"); await click(".forgot-password-reset"); - assert.strictEqual( - query(".alert-error").innerHTML.trim(), + assert.dom(".alert-error").hasHtml( I18n.t("forgot_password.complete_username_not_found", { username: "someuser", }), - "it should display an error for an invalid username" + "displays an error for an invalid username" ); await fillIn("#username-or-email", "someuser@gmail.com"); await click(".forgot-password-reset"); - assert.strictEqual( - query(".alert-error").innerHTML.trim(), + assert.dom(".alert-error").hasHtml( I18n.t("forgot_password.complete_email_not_found", { email: "someuser@gmail.com", }), - "it should display an error for an invalid email" + "displays an error for an invalid email" ); await fillIn("#username-or-email", "someuser"); @@ -55,12 +53,11 @@ acceptance("Forgot password", function (needs) { .dom(".alert-error") .doesNotExist("it should remove the flash error when succeeding"); - assert.strictEqual( - query(".d-modal__body").innerHTML.trim(), + assert.dom(".d-modal__body").hasHtml( I18n.t("forgot_password.complete_username_found", { username: "someuser", }), - "it should display a success message for a valid username" + "displays a success message for a valid username" ); await visit("/"); @@ -69,12 +66,11 @@ acceptance("Forgot password", function (needs) { await fillIn("#username-or-email", "someuser@gmail.com"); await click(".forgot-password-reset"); - assert.strictEqual( - query(".d-modal__body").innerHTML.trim(), + assert.dom(".d-modal__body").hasHtml( I18n.t("forgot_password.complete_email_found", { email: "someuser@gmail.com", }), - "it should display a success message for a valid email" + "displays a success message for a valid email" ); }); }); @@ -100,12 +96,11 @@ acceptance( await fillIn("#username-or-email", "someuser"); await click(".forgot-password-reset"); - assert.strictEqual( - query(".d-modal__body").innerHTML.trim(), + assert.dom(".d-modal__body").hasHtml( I18n.t("forgot_password.complete_username", { username: "someuser", }), - "it should display a success message" + "displays a success message" ); }); } diff --git a/app/assets/javascripts/discourse/tests/acceptance/hashtag-css-generator-test.js b/app/assets/javascripts/discourse/tests/acceptance/hashtag-css-generator-test.js index e240381560c..de8c0bc99ae 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/hashtag-css-generator-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/hashtag-css-generator-test.js @@ -22,12 +22,13 @@ acceptance("Hashtag CSS Generator", function (needs) { test("classes are generated", async function (assert) { await visit("/"); const cssTag = document.querySelector("style#hashtag-css-generator"); - assert.equal( - cssTag.innerHTML, - ".hashtag-category-badge { background-color: var(--primary-medium); }\n" + - ".hashtag-color--category-1 { background-color: #ff0000; }\n" + - ".hashtag-color--category-2 { background-color: #333; }\n" + - ".hashtag-color--category-4 { background: linear-gradient(-90deg, #2B81AF 50%, #ff0000 50%); }" - ); + assert + .dom(cssTag) + .hasHtml( + ".hashtag-category-badge { background-color: var(--primary-medium); }\n" + + ".hashtag-color--category-1 { background-color: #ff0000; }\n" + + ".hashtag-color--category-2 { background-color: #333; }\n" + + ".hashtag-color--category-4 { background: linear-gradient(-90deg, #2B81AF 50%, #ff0000 50%); }" + ); }); }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-and-hide-email-address-taken-test.js b/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-and-hide-email-address-taken-test.js index 4d17700fd3e..5b8a967809a 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-and-hide-email-address-taken-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-and-hide-email-address-taken-test.js @@ -1,6 +1,6 @@ import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; import I18n from "discourse-i18n"; acceptance("Login with email - hide email address taken", function (needs) { @@ -21,12 +21,11 @@ acceptance("Login with email - hide email address taken", function (needs) { await fillIn("#login-account-name", "someuser@example.com"); await click("#email-login-link"); - assert.strictEqual( - query(".alert-success").innerHTML.trim(), + assert.dom(".alert-success").hasHtml( I18n.t("email_login.complete_email_found", { email: "someuser@example.com", }), - "it should display the success message for any email address" + "displays the success message for any email address" ); }); }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-test.js b/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-test.js index 77216567d30..dd5f3a8b629 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/modal/login/login-with-email-test.js @@ -2,7 +2,7 @@ import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; import sinon from "sinon"; import DiscourseURL from "discourse/lib/url"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; import I18n from "discourse-i18n"; const TOKEN = "sometoken"; @@ -49,23 +49,21 @@ acceptance("Login with email", function (needs) { await fillIn("#login-account-name", "someuser"); await click("#email-login-link"); - assert.strictEqual( - query("#modal-alert").innerHTML.trim(), + assert.dom("#modal-alert").hasHtml( I18n.t("email_login.complete_username_not_found", { username: "someuser", }), - "it should display an error for an invalid username" + "displays an error for an invalid username" ); await fillIn("#login-account-name", "someuser@gmail.com"); await click("#email-login-link"); - assert.strictEqual( - query("#modal-alert").innerHTML.trim(), + assert.dom("#modal-alert").hasHtml( I18n.t("email_login.complete_email_not_found", { email: "someuser@gmail.com", }), - "it should display an error for an invalid email" + "displays an error for an invalid email" ); await fillIn("#login-account-name", "someuser"); @@ -74,23 +72,23 @@ acceptance("Login with email", function (needs) { await click("#email-login-link"); - assert.strictEqual( - query(".alert-success").innerHTML.trim(), - I18n.t("email_login.complete_username_found", { username: "someuser" }), - "it should display a success message for a valid username" - ); + assert + .dom(".alert-success") + .hasHtml( + I18n.t("email_login.complete_username_found", { username: "someuser" }), + "displays a success message for a valid username" + ); await visit("/"); await click("header .login-button"); await fillIn("#login-account-name", "someuser@gmail.com"); await click("#email-login-link"); - assert.strictEqual( - query(".alert-success").innerHTML.trim(), + assert.dom(".alert-success").hasHtml( I18n.t("email_login.complete_email_found", { email: "someuser@gmail.com", }), - "it should display a success message for a valid email" + "displays a success message for a valid email" ); userFound = false; 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 751f13190f6..6262284c672 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/password-reset-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/password-reset-test.js @@ -4,7 +4,7 @@ import sinon from "sinon"; import PreloadStore from "discourse/lib/preload-store"; import DiscourseURL from "discourse/lib/url"; import { parsePostData } from "discourse/tests/helpers/create-pretender"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; import I18n from "discourse-i18n"; acceptance("Password Reset", function (needs) { @@ -72,24 +72,22 @@ acceptance("Password Reset", function (needs) { await fillIn(".password-reset input", "123"); assert.dom(".password-reset .tip.bad").exists("input is not valid"); - assert.ok( - query(".password-reset .tip.bad").innerHTML.includes( - I18n.t("user.password.too_short", { - count: this.siteSettings.min_password_length, - }) - ), + assert.dom(".password-reset .tip.bad").includesHtml( + I18n.t("user.password.too_short", { + count: this.siteSettings.min_password_length, + }), "password too short" ); await fillIn(".password-reset input", "jonesyAlienSlayer"); await click(".password-reset form button[type='submit']"); assert.dom(".password-reset .tip.bad").exists("input is not valid"); - assert.ok( - query(".password-reset .tip.bad").innerHTML.includes( - "Password is the name of your cat" - ), - "server validation error message shows" - ); + assert + .dom(".password-reset .tip.bad") + .includesHtml( + "Password is the name of your cat", + "server validation error message shows" + ); assert .dom("#new-account-password[type='password']") @@ -121,10 +119,9 @@ acceptance("Password Reset", function (needs) { assert.dom(".alert-error").exists("shows 2FA error"); - assert.ok( - query(".alert-error").innerHTML.includes("invalid token"), - "shows server validation error message" - ); + assert + .dom(".alert-error") + .includesHtml("invalid token", "shows server validation error message"); await fillIn("input#second-factor", "123123"); await click(".password-reset form button"); diff --git a/app/assets/javascripts/discourse/tests/acceptance/reports-test.js b/app/assets/javascripts/discourse/tests/acceptance/reports-test.js index b357d5b828b..7e6b3f3bb43 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/reports-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/reports-test.js @@ -1,6 +1,6 @@ import { visit } from "@ember/test-helpers"; import { test } from "qunit"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; acceptance("Reports", function (needs) { needs.user(); @@ -10,21 +10,15 @@ acceptance("Reports", function (needs) { assert.dom(".admin-reports-list__report").exists({ count: 1 }); - const report = query(".admin-reports-list__report:first-child"); + assert + .dom(".admin-reports-list__report .admin-reports-list__report-title") + .hasHtml("My report"); - assert.strictEqual( - report - .querySelector(".admin-reports-list__report-title") - .innerHTML.trim(), - "My report" - ); - - assert.strictEqual( - report - .querySelector(".admin-reports-list__report-description") - .innerHTML.trim(), - "List of my activities" - ); + assert + .dom( + ".admin-reports-list__report .admin-reports-list__report-description" + ) + .hasHtml("List of my activities"); }); test("Visit report page", async function (assert) { diff --git a/app/assets/javascripts/discourse/tests/acceptance/review-test.js b/app/assets/javascripts/discourse/tests/acceptance/review-test.js index b8a82c50b74..274f9599b73 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/review-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/review-test.js @@ -62,24 +62,24 @@ acceptance("Review", function (needs) { await reviewableActionDropdown.selectRowByValue("reject_user_delete"); assert.dom(".reject-reason-reviewable-modal").exists(); - assert.ok( - query( - ".reject-reason-reviewable-modal .d-modal__title" - ).innerHTML.includes(I18n.t("review.reject_reason.title")), - "it opens reject reason modal when user is rejected" - ); + assert + .dom(".reject-reason-reviewable-modal .d-modal__title") + .includesHtml( + I18n.t("review.reject_reason.title"), + "opens reject reason modal when user is rejected" + ); await click(".d-modal__footer .cancel"); await reviewableActionDropdown.expand(); await reviewableActionDropdown.selectRowByValue("reject_user_block"); assert.dom(".reject-reason-reviewable-modal").exists(); - assert.ok( - query( - ".reject-reason-reviewable-modal .d-modal__title" - ).innerHTML.includes(I18n.t("review.reject_reason.title")), - "it opens reject reason modal when user is rejected and blocked" - ); + assert + .dom(".reject-reason-reviewable-modal .d-modal__title") + .includesHtml( + I18n.t("review.reject_reason.title"), + "opens reject reason modal when user is rejected and blocked" + ); }); test("Settings", async function (assert) { @@ -104,10 +104,9 @@ acceptance("Review", function (needs) { .dom(".reviewable-flagged-post .post-contents .username a[href]") .exists("it has a link to the user"); - assert.strictEqual( - query(".reviewable-flagged-post .post-body").innerHTML.trim(), - "cooked content" - ); + assert + .dom(".reviewable-flagged-post .post-body") + .hasHtml("cooked content"); assert .dom(".reviewable-flagged-post .reviewable-score") diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-move-posts-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-move-posts-test.js index 5eecaafd74f..9dbafca348f 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/topic-move-posts-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/topic-move-posts-test.js @@ -1,6 +1,6 @@ import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; -import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; +import { acceptance } from "discourse/tests/helpers/qunit-helpers"; import I18n from "discourse-i18n"; acceptance("Topic move posts", function (needs) { @@ -28,33 +28,30 @@ acceptance("Topic move posts", function (needs) { await click(".selected-posts .move-to-topic"); - assert.ok( - query(".choose-topic-modal .d-modal__title").innerHTML.includes( - I18n.t("topic.move_to.title") - ), - "it opens move to modal" - ); + assert + .dom(".choose-topic-modal .d-modal__title") + .includesHtml(I18n.t("topic.move_to.title"), "opens move to modal"); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.split_topic.radio_label") - ), - "it shows an option to move to new topic" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.split_topic.radio_label"), + "shows an option to move to new topic" + ); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.merge_topic.radio_label") - ), - "it shows an option to move to existing topic" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.merge_topic.radio_label"), + "shows an option to move to existing topic" + ); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.move_to_new_message.radio_label") - ), - "it shows an option to move to new message" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.move_to_new_message.radio_label"), + "shows an option to move to new message" + ); }); test("display error when new topic has invalid title", async function (assert) { @@ -75,33 +72,30 @@ acceptance("Topic move posts", function (needs) { await click(".select-all"); await click(".selected-posts .move-to-topic"); - assert.ok( - query(".choose-topic-modal .d-modal__title").innerHTML.includes( - I18n.t("topic.move_to.title") - ), - "it opens move to modal" - ); + assert + .dom(".choose-topic-modal .d-modal__title") + .includesHtml(I18n.t("topic.move_to.title"), "opens move to modal"); - assert.notOk( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.split_topic.radio_label") - ), - "it does not show an option to move to new topic" - ); + assert + .dom(".choose-topic-modal .radios") + .doesNotIncludeHtml( + I18n.t("topic.split_topic.radio_label"), + "does not show an option to move to new topic" + ); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.merge_topic.radio_label") - ), - "it shows an option to move to existing topic" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.merge_topic.radio_label"), + "shows an option to move to existing topic" + ); - assert.notOk( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.move_to_new_message.radio_label") - ), - "it does not show an option to move to new message" - ); + assert + .dom(".choose-topic-modal .radios") + .doesNotIncludeHtml( + I18n.t("topic.move_to_new_message.radio_label"), + "does not show an option to move to new message" + ); }); test("moving posts to existing topic", async function (assert) { @@ -112,12 +106,12 @@ acceptance("Topic move posts", function (needs) { await click(".selected-posts .move-to-topic"); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.merge_topic.radio_label") - ), - "it shows an option to move to an existing topic" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.merge_topic.radio_label"), + "shows an option to move to an existing topic" + ); await click(".choose-topic-modal .radios #move-to-existing-topic"); @@ -131,12 +125,12 @@ acceptance("Topic move posts", function (needs) { await click(".choose-topic-list .existing-topic:first-child input"); - assert.ok( - query(".choose-topic-modal .checkbox-label").innerHTML.includes( - I18n.t("topic.merge_topic.chronological_order") - ), - "it shows a checkbox to merge posts in chronological order" - ); + assert + .dom(".choose-topic-modal .checkbox-label") + .includesHtml( + I18n.t("topic.merge_topic.chronological_order"), + "shows a checkbox to merge posts in chronological order" + ); }); test("moving posts from personal message", async function (assert) { @@ -154,26 +148,23 @@ acceptance("Topic move posts", function (needs) { await click(".selected-posts .move-to-topic"); - assert.ok( - query(".choose-topic-modal .d-modal__title").innerHTML.includes( - I18n.t("topic.move_to.title") - ), - "it opens move to modal" - ); + assert + .dom(".choose-topic-modal .d-modal__title") + .includesHtml(I18n.t("topic.move_to.title"), "opens move to modal"); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.move_to_new_message.radio_label") - ), - "it shows an option to move to new message" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.move_to_new_message.radio_label"), + "shows an option to move to new message" + ); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.move_to_existing_message.radio_label") - ), - "it shows an option to move to existing message" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.move_to_existing_message.radio_label"), + "shows an option to move to existing message" + ); }); test("group moderator moving posts", async function (assert) { @@ -191,12 +182,9 @@ acceptance("Topic move posts", function (needs) { await click(".selected-posts .move-to-topic"); - assert.ok( - query(".choose-topic-modal .d-modal__title").innerHTML.includes( - I18n.t("topic.move_to.title") - ), - "it opens move to modal" - ); + assert + .dom(".choose-topic-modal .d-modal__title") + .includesHtml(I18n.t("topic.move_to.title"), "opens move to modal"); }); test("moving posts from personal message to existing message", async function (assert) { @@ -207,12 +195,12 @@ acceptance("Topic move posts", function (needs) { await click(".selected-posts .move-to-topic"); - assert.ok( - query(".choose-topic-modal .radios").innerHTML.includes( - I18n.t("topic.move_to_existing_message.radio_label") - ), - "it shows an option to move to an existing message" - ); + assert + .dom(".choose-topic-modal .radios") + .includesHtml( + I18n.t("topic.move_to_existing_message.radio_label"), + "shows an option to move to an existing message" + ); await click(".choose-topic-modal .radios #move-to-existing-message"); @@ -226,11 +214,11 @@ acceptance("Topic move posts", function (needs) { await click(".choose-topic-modal .existing-message:first-of-type input"); - assert.ok( - query(".choose-topic-modal .checkbox-label").innerHTML.includes( - I18n.t("topic.merge_topic.chronological_order") - ), - "it shows a checkbox to merge posts in chronological order" - ); + assert + .dom(".choose-topic-modal .checkbox-label") + .includesHtml( + I18n.t("topic.merge_topic.chronological_order"), + "shows a checkbox to merge posts in chronological order" + ); }); }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-test.js index f8624d63a24..046f7e7f7f5 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/topic-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/topic-test.js @@ -168,10 +168,9 @@ acceptance("Topic", function (needs) { await click("#topic-title .submit-edit"); - assert.ok( - query(".fancy-title").innerHTML.trim().includes("bike.png"), - "it displays the new title with emojis" - ); + assert + .dom(".fancy-title") + .includesHtml("bike.png", "displays the new title with emojis"); }); test("Updating the topic title with unicode emojis", async function (assert) { @@ -182,10 +181,9 @@ acceptance("Topic", function (needs) { await click("#topic-title .submit-edit"); - assert.ok( - query(".fancy-title").innerHTML.trim().includes("man_farmer.png"), - "it displays the new title with emojis" - ); + assert + .dom(".fancy-title") + .includesHtml("man_farmer.png", "displays the new title with emojis"); }); test("Updating the topic title with unicode emojis without whitespace", async function (assert) { @@ -197,12 +195,12 @@ acceptance("Topic", function (needs) { await click("#topic-title .submit-edit"); - assert.ok( - query(".fancy-title") - .innerHTML.trim() - .includes("slightly_smiling_face.png"), - "it displays the new title with emojis" - ); + assert + .dom(".fancy-title") + .includesHtml( + "slightly_smiling_face.png", + "displays the new title with emojis" + ); }); test("Suggested topics", async function (assert) { @@ -346,21 +344,21 @@ acceptance("Topic featured links", function (needs) { await click(".topic-admin-multi-select .btn"); await click("#post_3 .select-below"); - assert.ok( - query(".selected-posts").innerHTML.includes( - I18n.t("topic.multi_select.description", { count: 18 }) - ), - "it should select the right number of posts" - ); + assert + .dom(".selected-posts") + .includesHtml( + I18n.t("topic.multi_select.description", { count: 18 }), + "selects the right number of posts" + ); await click("#post_2 .select-below"); - assert.ok( - query(".selected-posts").innerHTML.includes( - I18n.t("topic.multi_select.description", { count: 19 }) - ), - "it should select the right number of posts" - ); + assert + .dom(".selected-posts") + .includesHtml( + I18n.t("topic.multi_select.description", { count: 19 }), + "selects the right number of posts" + ); }); test("View Hidden Replies", async function (assert) { 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 d60b35dc05e..36120181515 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 @@ -1,11 +1,7 @@ import { click, visit } from "@ember/test-helpers"; import { IMAGE_VERSION } from "pretty-text/emoji/version"; import { test } from "qunit"; -import { - acceptance, - normalizeHtml, - query, -} from "discourse/tests/helpers/qunit-helpers"; +import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; acceptance("User Drafts", function (needs) { needs.user(); @@ -47,15 +43,12 @@ acceptance("User Drafts", function (needs) { query(".user-stream-item:nth-child(3) .category").textContent, "meta" ); - assert.strictEqual( - normalizeHtml( - query(".user-stream-item:nth-child(3) .excerpt").innerHTML.trim() - ), - normalizeHtml( - `here goes a reply to a PM :slight_smile:` - ), - "shows the excerpt" - ); + assert + .dom(".user-stream-item:nth-child(3) .excerpt") + .hasHtml( + `here goes a reply to a PM :slight_smile:`, + "shows the excerpt" + ); assert .dom(".user-stream-item:nth-child(2) a.avatar-link") diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js index c38494f55d0..af6d7ebc72f 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js @@ -121,22 +121,19 @@ acceptance("User Preferences - Account", function (needs) { .dom(".pref-associated-accounts") .exists("it has the connected accounts section"); - assert.ok( - query( + assert + .dom( ".pref-associated-accounts table tr:nth-of-type(1) td:nth-of-type(1)" - ).innerHTML.includes("Facebook"), - "it lists facebook" - ); + ) + .includesHtml("Facebook", "lists facebook"); await click( ".pref-associated-accounts table tr:nth-of-type(1) td:last-child button" ); - assert.ok( - query( - ".pref-associated-accounts table tr:nth-of-type(1) td:last-of-type" - ).innerHTML.includes("Connect") - ); + assert + .dom(".pref-associated-accounts table tr:nth-of-type(1) td:last-of-type") + .includesHtml("Connect"); }); test("avatars are selectable for staff user when `selectable_avatars_mode` site setting is set to `staff`", async function (assert) { diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-second-factor-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-second-factor-test.js index 37f1e16d19d..af8d1a27273 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-second-factor-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-second-factor-test.js @@ -8,7 +8,6 @@ import { import { test } from "qunit"; import { acceptance, - query, updateCurrentUser, } from "discourse/tests/helpers/qunit-helpers"; @@ -74,10 +73,12 @@ acceptance("User Preferences - Second Factor", function (needs) { .exists("displays second factor key"); await click(".add-totp"); - assert.ok( - query(".alert-error").innerHTML.includes("provide a name and the code"), - "shows name/token missing error message" - ); + assert + .dom(".alert-error") + .includesHtml( + "provide a name and the code", + "shows name/token missing error message" + ); }); test("second factor security keys", async function (assert) { @@ -93,10 +94,9 @@ acceptance("User Preferences - Second Factor", function (needs) { if (typeof PublicKeyCredential !== "undefined") { await click(".add-security-key"); - assert.ok( - query(".alert-error").innerHTML.includes("provide a name"), - "shows name missing error message" - ); + assert + .dom(".alert-error") + .includesHtml("provide a name", "shows name missing error message"); } }); diff --git a/app/assets/javascripts/discourse/tests/integration/components/composer-editor-test.gjs b/app/assets/javascripts/discourse/tests/integration/components/composer-editor-test.gjs index c01ef8a3bb7..68aff075d92 100644 --- a/app/assets/javascripts/discourse/tests/integration/components/composer-editor-test.gjs +++ b/app/assets/javascripts/discourse/tests/integration/components/composer-editor-test.gjs @@ -3,7 +3,6 @@ import { module, test } from "qunit"; import ComposerEditor from "discourse/components/composer-editor"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; import pretender, { response } from "discourse/tests/helpers/create-pretender"; -import { query } from "discourse/tests/helpers/qunit-helpers"; module("Integration | Component | ComposerEditor", function (hooks) { setupRenderingTest(hooks); @@ -52,9 +51,6 @@ module("Integration | Component | ComposerEditor", function (hooks) { ); await fillIn(".d-editor-input", `">`); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - '

">

' - ); + assert.dom(".d-editor-preview").hasHtml('

">

'); }); }); diff --git a/app/assets/javascripts/discourse/tests/integration/components/cook-text-test.js b/app/assets/javascripts/discourse/tests/integration/components/cook-text-test.js index bb441362d68..218bf4048fc 100644 --- a/app/assets/javascripts/discourse/tests/integration/components/cook-text-test.js +++ b/app/assets/javascripts/discourse/tests/integration/components/cook-text-test.js @@ -4,7 +4,6 @@ import { resetCache } from "pretty-text/upload-short-url"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; import pretender, { response } from "discourse/tests/helpers/create-pretender"; -import { query } from "discourse/tests/helpers/qunit-helpers"; module("Integration | Component | cook-text", function (hooks) { setupRenderingTest(hooks); @@ -16,8 +15,7 @@ module("Integration | Component | cook-text", function (hooks) { test("renders markdown", async function (assert) { await render(hbs``); - const html = query(".post-body").innerHTML.trim(); - assert.strictEqual(html, "

foo

"); + assert.dom(".post-body").hasHtml("

foo

"); }); test("resolves short URLs", async function (assert) { @@ -35,10 +33,8 @@ module("Integration | Component | cook-text", function (hooks) { hbs`` ); - const html = query(".post-body").innerHTML.trim(); - assert.strictEqual( - html, - '

an image

' - ); + assert + .dom(".post-body") + .hasHtml('

an image

'); }); }); 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 0ba49368ac0..31188d31d31 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 @@ -30,10 +30,9 @@ module("Integration | Component | d-editor", function (hooks) { await fillIn(".d-editor-input", "hello **world**"); assert.strictEqual(this.value, "hello **world**"); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - "

hello world

" - ); + assert + .dom(".d-editor-preview") + .hasHtml("

hello world

"); }); test("links in preview are not tabbable", async function (assert) { @@ -41,10 +40,11 @@ module("Integration | Component | d-editor", function (hooks) { await fillIn(".d-editor-input", "[discourse](https://www.discourse.org)"); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - '

discourse

' - ); + assert + .dom(".d-editor-preview") + .hasHtml( + '

discourse

' + ); }); test("updating the value refreshes the preview", async function (assert) { @@ -52,18 +52,12 @@ module("Integration | Component | d-editor", function (hooks) { await render(hbs``); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - "

evil trout

" - ); + assert.dom(".d-editor-preview").hasHtml("

evil trout

"); this.set("value", "zogstrip"); await settled(); - assert.strictEqual( - query(".d-editor-preview").innerHTML.trim(), - "

zogstrip

" - ); + assert.dom(".d-editor-preview").hasHtml("

zogstrip

"); }); function jumpEnd(textarea) { diff --git a/app/assets/javascripts/discourse/tests/integration/components/widgets/widget-dropdown-test.js b/app/assets/javascripts/discourse/tests/integration/components/widgets/widget-dropdown-test.js index 3b6443ef7f6..4a14ad79f45 100644 --- a/app/assets/javascripts/discourse/tests/integration/components/widgets/widget-dropdown-test.js +++ b/app/assets/javascripts/discourse/tests/integration/components/widgets/widget-dropdown-test.js @@ -192,9 +192,9 @@ module("Integration | Component | Widget | widget-dropdown", function (hooks) { this.setProperties(DEFAULT_CONTENT); await render(TEMPLATE); - await toggle(); - assert.strictEqual(rowById(4).innerHTML.trim(), "baz"); + + assert.dom(rowById(4)).hasHtml("baz"); }); test("separator", async function (assert) { diff --git a/app/assets/javascripts/discourse/tests/integration/helpers/d-icon-test.js b/app/assets/javascripts/discourse/tests/integration/helpers/d-icon-test.js index 7277e4c1c0b..fb526c96aa7 100644 --- a/app/assets/javascripts/discourse/tests/integration/helpers/d-icon-test.js +++ b/app/assets/javascripts/discourse/tests/integration/helpers/d-icon-test.js @@ -2,7 +2,6 @@ import { render } from "@ember/test-helpers"; import { hbs } from "ember-cli-htmlbars"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; module("Integration | Helper | d-icon", function (hooks) { setupRenderingTest(hooks); @@ -10,20 +9,20 @@ module("Integration | Helper | d-icon", function (hooks) { test("default", async function (assert) { await render(hbs`
{{d-icon "bars"}}
`); - const html = query(".test").innerHTML.trim(); - assert.strictEqual( - html, - '' - ); + assert + .dom(".test") + .hasHtml( + '' + ); }); test("with replacement", async function (assert) { await render(hbs`
{{d-icon "d-watching"}}
`); - const html = query(".test").innerHTML.trim(); - assert.strictEqual( - html, - '' - ); + assert + .dom(".test") + .hasHtml( + '' + ); }); }); diff --git a/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js b/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js index c13f159064b..81305b4b25f 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js @@ -18,8 +18,7 @@ function generateClickEventOn(selector) { function badgeClickCount(assert, id, expected) { track(generateClickEventOn(`#${id}`)); - const badge = fixture(`#${id}`).querySelector("span.badge"); - assert.strictEqual(parseInt(badge.innerHTML, 10), expected); + assert.dom("span.badge", fixture(`#${id}`)).hasHtml(String(expected)); } function testOpenInANewTab(description, clickEventModifier) { diff --git a/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js b/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js index 315bfa9fb3a..a6dae937e74 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js @@ -250,16 +250,16 @@ module("Unit | Utility | formatter", function (hooks) { assert.strictEqual(elem.dataset.format, "medium-with-ago"); assert.strictEqual(elem.dataset.time, d.getTime().toString()); assert.dom(elem).hasAttribute("title", longDate(d)); - assert.strictEqual(elem.innerHTML, "1 day ago"); + assert.dom(elem).hasHtml("1 day ago"); elem = domFromString(autoUpdatingRelativeAge(d, { format: "medium" }))[0]; assert.strictEqual(elem.dataset.format, "medium"); assert.strictEqual(elem.dataset.time, d.getTime().toString()); assert.dom(elem).doesNotHaveAttribute("title"); - assert.strictEqual(elem.innerHTML, "1 day"); + assert.dom(elem).hasHtml("1 day"); elem = domFromString(autoUpdatingRelativeAge(d, { prefix: "test" }))[0]; - assert.strictEqual(elem.innerHTML, "test 1d"); + assert.dom(elem).hasHtml("test 1d"); }); test("updateRelativeAge", function (assert) { @@ -269,7 +269,7 @@ module("Unit | Utility | formatter", function (hooks) { updateRelativeAge(elem); - assert.strictEqual(elem.innerHTML, "2m"); + assert.dom(elem).hasHtml("2m"); d = new Date(); elem = domFromString( @@ -279,7 +279,7 @@ module("Unit | Utility | formatter", function (hooks) { updateRelativeAge(elem); - assert.strictEqual(elem.innerHTML, "2 mins ago"); + assert.dom(elem).hasHtml("2 mins ago"); }); test("number", function (assert) { diff --git a/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js b/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js index d9bf1d6ff98..9f1054fa457 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js @@ -44,9 +44,6 @@ module("Unit | Utility | link-mentions", function (hooks) { root.querySelector("a[data-mentionable-user-count]").innerText, "@mentionable_group" ); - assert.strictEqual( - root.querySelector("span.mention").innerHTML, - "@invalid" - ); + assert.dom("span.mention", root).hasHtml("@invalid"); }); }); diff --git a/plugins/chat/test/javascripts/acceptance/hashtag-css-generator-test.js b/plugins/chat/test/javascripts/acceptance/hashtag-css-generator-test.js index 0355cf578a3..35556ce1364 100644 --- a/plugins/chat/test/javascripts/acceptance/hashtag-css-generator-test.js +++ b/plugins/chat/test/javascripts/acceptance/hashtag-css-generator-test.js @@ -65,13 +65,13 @@ acceptance("Chat | Hashtag CSS Generator", function (needs) { test("hashtag CSS classes are generated", async function (assert) { await visit("/"); - const cssTag = document.querySelector("style#hashtag-css-generator"); - assert.equal( - cssTag.innerHTML, - ".hashtag-category-badge { background-color: var(--primary-medium); }\n" + - ".hashtag-color--category-1 { background-color: #ff0000; }\n" + - ".hashtag-color--category-2 { background-color: #333; }\n" + - ".hashtag-color--category-4 { background: linear-gradient(-90deg, #2B81AF 50%, #ff0000 50%); }" - ); + assert + .dom("style#hashtag-css-generator", document.head) + .hasHtml( + ".hashtag-category-badge { background-color: var(--primary-medium); }\n" + + ".hashtag-color--category-1 { background-color: #ff0000; }\n" + + ".hashtag-color--category-2 { background-color: #333; }\n" + + ".hashtag-color--category-4 { background: linear-gradient(-90deg, #2B81AF 50%, #ff0000 50%); }" + ); }); }); diff --git a/plugins/chat/test/javascripts/components/chat-message-collapser-test.js b/plugins/chat/test/javascripts/components/chat-message-collapser-test.js index 0e75199d28a..7c928193463 100644 --- a/plugins/chat/test/javascripts/components/chat-message-collapser-test.js +++ b/plugins/chat/test/javascripts/components/chat-message-collapser-test.js @@ -53,11 +53,9 @@ module("Discourse Chat | Component | chat message collapser", function (hooks) { this.set("uploads", [{ original_filename: evilString }]); await render(hbs``); - assert.true( - query(".chat-message-collapser-link-small").innerHTML.includes( - evilStringEscaped - ) - ); + assert + .dom(".chat-message-collapser-link-small") + .includesHtml(evilStringEscaped); }); }); @@ -399,16 +397,14 @@ module( ); await render(hbs``); - assert.true( - queryAll(".chat-message-collapser-link-small")[0].innerHTML.includes( - evilStringEscaped - ) - ); - assert.true( - queryAll(".chat-message-collapser-link-small")[1].innerHTML.includes( - "<script>someeviltitle</script>" - ) - ); + const links = [ + ...document.querySelectorAll(".chat-message-collapser-link-small"), + ]; + + assert.dom(links[0]).includesHtml(evilStringEscaped); + assert + .dom(links[1]) + .includesHtml("<script>someeviltitle</script>"); }); test("shows alt or links (if no alt) for linked image", async function (assert) { @@ -511,10 +507,7 @@ module( assert .dom(".chat-message-collapser-link-small") .hasProperty("href", /%3Cscript%3Esomeeviltitle%3C\/script%3E$/); - assert.strictEqual( - query(".chat-message-collapser-link-small").innerHTML.trim(), - "someeviltitle" - ); + assert.dom(".chat-message-collapser-link-small").hasHtml("someeviltitle"); }); test("removes album title overlay", async function (assert) { diff --git a/plugins/chat/test/javascripts/components/chat-message-test.js b/plugins/chat/test/javascripts/components/chat-message-test.js index a54fdd0d033..a3a7e41baab 100644 --- a/plugins/chat/test/javascripts/components/chat-message-test.js +++ b/plugins/chat/test/javascripts/components/chat-message-test.js @@ -4,7 +4,6 @@ import hbs from "htmlbars-inline-precompile"; import { module, test } from "qunit"; import CoreFabricators from "discourse/lib/fabricators"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators"; module("Discourse Chat | Component | chat-message", function (hooks) { @@ -64,11 +63,9 @@ module("Discourse Chat | Component | chat-message", function (hooks) { await this.message.cook(); await render(template); - assert.true( - query(".chat-message-text") - .innerHTML.trim() - .includes("

what test

") - ); + assert + .dom(".chat-message-text") + .includesHtml("

what test

"); }); test("Message with reply", async function (assert) { diff --git a/plugins/chat/test/javascripts/components/chat-modal-archive-channel-test.js b/plugins/chat/test/javascripts/components/chat-modal-archive-channel-test.js index 67bb5aa97b4..f0012a7633b 100644 --- a/plugins/chat/test/javascripts/components/chat-modal-archive-channel-test.js +++ b/plugins/chat/test/javascripts/components/chat-modal-archive-channel-test.js @@ -3,7 +3,6 @@ import { render } from "@ember/test-helpers"; import hbs from "htmlbars-inline-precompile"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators"; module( @@ -20,11 +19,9 @@ module( hbs`` ); - assert.true( - query(".chat-modal-archive-channel").innerHTML.includes( - "<script>someeviltitle</script>" - ) - ); + assert + .dom(".chat-modal-archive-channel") + .includesHtml("<script>someeviltitle</script>"); }); } ); diff --git a/plugins/chat/test/javascripts/components/chat-modal-delete-channel-test.js b/plugins/chat/test/javascripts/components/chat-modal-delete-channel-test.js index c7fcc2ad9a1..942609ddf25 100644 --- a/plugins/chat/test/javascripts/components/chat-modal-delete-channel-test.js +++ b/plugins/chat/test/javascripts/components/chat-modal-delete-channel-test.js @@ -3,7 +3,6 @@ import { render } from "@ember/test-helpers"; import hbs from "htmlbars-inline-precompile"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators"; module( @@ -20,11 +19,9 @@ module( hbs`` ); - assert.true( - query(".chat-modal-delete-channel__instructions").innerHTML.includes( - "<script>someeviltitle</script>" - ) - ); + assert + .dom(".chat-modal-delete-channel__instructions") + .includesHtml("<script>someeviltitle</script>"); }); } ); diff --git a/plugins/chat/test/javascripts/components/chat-modal-move-message-to-channel-test.js b/plugins/chat/test/javascripts/components/chat-modal-move-message-to-channel-test.js index f3d39cf023a..411ecdb3174 100644 --- a/plugins/chat/test/javascripts/components/chat-modal-move-message-to-channel-test.js +++ b/plugins/chat/test/javascripts/components/chat-modal-move-message-to-channel-test.js @@ -3,7 +3,6 @@ import { render } from "@ember/test-helpers"; import hbs from "htmlbars-inline-precompile"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators"; module( @@ -24,11 +23,9 @@ module( /> `); - assert.true( - query(".chat-modal-move-message-to-channel").innerHTML.includes( - "<script>someeviltitle</script>" - ) - ); + assert + .dom(".chat-modal-move-message-to-channel") + .includesHtml("<script>someeviltitle</script>"); }); } ); diff --git a/plugins/chat/test/javascripts/components/chat-thread-header-test.js b/plugins/chat/test/javascripts/components/chat-thread-header-test.js index a2c99273bb7..77e7637faf8 100644 --- a/plugins/chat/test/javascripts/components/chat-thread-header-test.js +++ b/plugins/chat/test/javascripts/components/chat-thread-header-test.js @@ -3,7 +3,6 @@ import { render } from "@ember/test-helpers"; import hbs from "htmlbars-inline-precompile"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators"; module("Discourse Chat | Component | chat-thread-header", function (hooks) { @@ -17,10 +16,8 @@ module("Discourse Chat | Component | chat-thread-header", function (hooks) { `); - assert.ok( - query(".c-navbar__title") - .innerHTML.trim() - .includes("<style>body { background: red;}</style>") - ); + assert + .dom(".c-navbar__title") + .includesHtml("<style>body { background: red;}</style>"); }); }); diff --git a/plugins/chat/test/javascripts/components/chat-thread-list-item-test.js b/plugins/chat/test/javascripts/components/chat-thread-list-item-test.js index a2e313f80c0..f62e2e6ba6a 100644 --- a/plugins/chat/test/javascripts/components/chat-thread-list-item-test.js +++ b/plugins/chat/test/javascripts/components/chat-thread-list-item-test.js @@ -3,7 +3,6 @@ import { render } from "@ember/test-helpers"; import hbs from "htmlbars-inline-precompile"; import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; -import { query } from "discourse/tests/helpers/qunit-helpers"; import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators"; module("Discourse Chat | Component | chat-thread-list-item", function (hooks) { @@ -17,9 +16,8 @@ module("Discourse Chat | Component | chat-thread-list-item", function (hooks) { `); - assert.equal( - query(".chat-thread-list-item__title").innerHTML.trim(), - "<style>body { background: red;}</style>" - ); + assert + .dom(".chat-thread-list-item__title") + .hasHtml("<style>body { background: red;}</style>"); }); });