diff --git a/elixir/apps/web/mix.exs b/elixir/apps/web/mix.exs index 2a249eb28..a12c92d4c 100644 --- a/elixir/apps/web/mix.exs +++ b/elixir/apps/web/mix.exs @@ -70,7 +70,7 @@ defmodule Web.MixProject do {:logger_json, "~> 7.0"}, # Test deps - {:floki, "~> 0.37.0", only: :test}, + {:floki, "~> 0.38.0", only: :test}, {:bypass, "~> 2.1", only: :test}, {:wallaby, "~> 0.30.0", only: :test}, {:credo, "~> 1.5", only: [:dev, :test], runtime: false}, diff --git a/elixir/apps/web/test/support/conn_case.ex b/elixir/apps/web/test/support/conn_case.ex index aeaed1ff9..dbd254ae4 100644 --- a/elixir/apps/web/test/support/conn_case.ex +++ b/elixir/apps/web/test/support/conn_case.ex @@ -162,8 +162,13 @@ defmodule Web.ConnCase do ### Helpers to test LiveView forms + # Helper to parse HTML if it's a string, or return as-is if already parsed + defp parse_if_needed(html) when is_binary(html), do: Floki.parse_fragment!(html) + defp parse_if_needed(parsed), do: parsed + def find_inputs(html, selector) do html + |> parse_if_needed() |> Floki.find("#{selector} input,select,textarea") |> Enum.flat_map(&Floki.attribute(&1, "name")) |> Enum.uniq() @@ -177,6 +182,7 @@ defmodule Web.ConnCase do def form_validation_errors(html_or_form_element) do html_or_form_element |> ensure_rendered() + |> parse_if_needed() |> Floki.find("[data-validation-error-for]") |> Enum.map(fn html_element -> [field] = Floki.attribute(html_element, "data-validation-error-for") @@ -225,23 +231,28 @@ defmodule Web.ConnCase do def vertical_table_to_map(table_html) do table_html + |> parse_if_needed() |> Floki.find("tbody tr") |> Enum.map(fn row -> - key = Floki.find(row, "th") |> reject_tooltips() |> element_to_text() |> String.downcase() - value = Floki.find(row, "td") |> element_to_text() + key = row |> Floki.find("th") |> reject_tooltips() |> element_to_text() |> String.downcase() + value = row |> Floki.find("td") |> element_to_text() {key, value} end) |> Enum.into(%{}) end def table_columns(table_html) do - Floki.find(table_html, "thead tr th") + table_html + |> parse_if_needed() + |> Floki.find("thead tr th") |> elements_to_text() |> Enum.map(&String.downcase/1) end def table_rows(table_html) do - Floki.find(table_html, "tbody tr") + table_html + |> parse_if_needed() + |> Floki.find("tbody tr") |> Enum.map(fn row -> row |> Floki.find("td") @@ -287,6 +298,7 @@ defmodule Web.ConnCase do def active_buttons(html) do html + |> parse_if_needed() |> Floki.find("main button") |> Enum.filter(fn button -> Floki.attribute(button, "disabled") != "disabled" diff --git a/elixir/apps/web/test/web/auth_test.exs b/elixir/apps/web/test/web/auth_test.exs index 51f25b4f8..947636863 100644 --- a/elixir/apps/web/test/web/auth_test.exs +++ b/elixir/apps/web/test/web/auth_test.exs @@ -281,6 +281,7 @@ defmodule Web.AuthTest do assert response =~ "Sign in successful" assert response + |> Floki.parse_fragment!() |> Floki.attribute("meta", "content") |> Enum.any?(fn value -> &(&1 == "0; url=/#{account.slug}/sign_in/client_redirect") @@ -311,6 +312,7 @@ defmodule Web.AuthTest do assert response =~ "Sign in successful" assert response + |> Floki.parse_fragment!() |> Floki.attribute("meta", "content") |> Enum.any?(fn value -> &(&1 == "0; url=/#{account.slug}/sign_in/client_redirect") @@ -794,6 +796,7 @@ defmodule Web.AuthTest do assert response =~ "Sign in successful" assert response + |> Floki.parse_fragment!() |> Floki.attribute("meta", "content") |> Enum.any?(fn value -> &(&1 == "0; url=/#{account.slug}/sign_in/client_redirect") diff --git a/elixir/apps/web/test/web/live/actors/edit_test.exs b/elixir/apps/web/test/web/live/actors/edit_test.exs index e5df1f862..c82c0f85a 100644 --- a/elixir/apps/web/test/web/live/actors/edit_test.exs +++ b/elixir/apps/web/test/web/live/actors/edit_test.exs @@ -56,7 +56,7 @@ defmodule Web.Live.Actors.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/#{actor}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ actor.name @@ -251,7 +251,7 @@ defmodule Web.Live.Actors.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/#{actor}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ actor.name diff --git a/elixir/apps/web/test/web/live/actors/groups_test.exs b/elixir/apps/web/test/web/live/actors/groups_test.exs index b1fb4c4f5..ea938f72a 100644 --- a/elixir/apps/web/test/web/live/actors/groups_test.exs +++ b/elixir/apps/web/test/web/live/actors/groups_test.exs @@ -56,7 +56,7 @@ defmodule Web.Live.Actors.GroupsTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/#{actor}/edit_groups") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ actor.name @@ -130,6 +130,7 @@ defmodule Web.Live.Actors.GroupsTest do lv |> element("tr button", "Add") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#groups") |> table_to_map() @@ -140,6 +141,7 @@ defmodule Web.Live.Actors.GroupsTest do lv |> element("tr button", "Remove") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#groups") |> table_to_map() diff --git a/elixir/apps/web/test/web/live/actors/index_test.exs b/elixir/apps/web/test/web/live/actors/index_test.exs index 2de93598e..a8ce7a60d 100644 --- a/elixir/apps/web/test/web/live/actors/index_test.exs +++ b/elixir/apps/web/test/web/live/actors/index_test.exs @@ -38,7 +38,7 @@ defmodule Web.Live.Actors.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" end @@ -53,7 +53,11 @@ defmodule Web.Live.Actors.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors") - assert button = Floki.find(html, "a[href='/#{account.slug}/actors/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/actors/new']") + assert Floki.text(button) =~ "Add Actor" end @@ -176,6 +180,7 @@ defmodule Web.Live.Actors.IndexTest do lv |> element("#actors") |> render() + |> Floki.parse_fragment!() |> Floki.find("a[href*=\"api_clients/#{api_client.id}\"]") assert length(items) == 1 diff --git a/elixir/apps/web/test/web/live/actors/service_accounts/new_identity_test.exs b/elixir/apps/web/test/web/live/actors/service_accounts/new_identity_test.exs index 98e2de450..d7697eba2 100644 --- a/elixir/apps/web/test/web/live/actors/service_accounts/new_identity_test.exs +++ b/elixir/apps/web/test/web/live/actors/service_accounts/new_identity_test.exs @@ -49,7 +49,7 @@ defmodule Web.Live.Actors.ServiceAccounts.NewIdentityTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/service_accounts/#{actor}/new_identity") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ actor.name @@ -154,7 +154,9 @@ defmodule Web.Live.Actors.ServiceAccounts.NewIdentityTest do } assert {:ok, subject} = - Floki.find(html, "code") + html + |> Floki.parse_fragment!() + |> Floki.find("code") |> element_to_text() |> Domain.Auth.authenticate(context) diff --git a/elixir/apps/web/test/web/live/actors/service_accounts/new_test.exs b/elixir/apps/web/test/web/live/actors/service_accounts/new_test.exs index 70d4a93eb..1837b66bd 100644 --- a/elixir/apps/web/test/web/live/actors/service_accounts/new_test.exs +++ b/elixir/apps/web/test/web/live/actors/service_accounts/new_test.exs @@ -41,7 +41,7 @@ defmodule Web.Live.Actors.ServiceAccount.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/service_accounts/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ "Add" diff --git a/elixir/apps/web/test/web/live/actors/show_test.exs b/elixir/apps/web/test/web/live/actors/show_test.exs index 99a23de6d..4c9b7075e 100644 --- a/elixir/apps/web/test/web/live/actors/show_test.exs +++ b/elixir/apps/web/test/web/live/actors/show_test.exs @@ -43,7 +43,7 @@ defmodule Web.Live.Actors.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/#{actor}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ actor.name @@ -375,6 +375,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("#identity-#{email_identity.id} button", "Send Welcome Email") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Welcome email sent to #{email_identity.provider_identifier}" @@ -414,6 +415,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("#identity-#{oidc_identity.id} button", "Send Welcome Email") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Welcome email sent to #{oidc_email}" @@ -447,6 +449,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("#identity-#{email_identity.id} button", "Send Welcome Email") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Welcome email sent to #{email_identity.provider_identifier}" @@ -455,6 +458,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("#identity-#{email_identity.id} button", "Send Welcome Email") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-error") |> element_to_text() =~ "You sent too many welcome emails to this address. Please try again later." @@ -571,6 +575,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("#identity-#{other_identity.id} button[type=submit]", "Delete") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Identity was deleted." end @@ -800,6 +805,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("button[type=submit]", "Delete User") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-error") |> element_to_text() =~ "You can't delete the last admin of an account." @@ -823,6 +829,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("button[type=submit]", "Disable User") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Actor was disabled." @@ -843,6 +850,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("button[type=submit]", "Disable User") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-error") |> element_to_text() =~ "You can't disable the last admin of an account." @@ -867,6 +875,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("button[type=submit]", "Enable User") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Actor was enabled." @@ -1005,6 +1014,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("button[type=submit]", "Disable Service Account") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Actor was disabled." @@ -1029,6 +1039,7 @@ defmodule Web.Live.Actors.ShowTest do assert lv |> element("button[type=submit]", "Enable Service Account") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "Actor was enabled." diff --git a/elixir/apps/web/test/web/live/actors/users/new_identity_test.exs b/elixir/apps/web/test/web/live/actors/users/new_identity_test.exs index 4333b88a1..db014c408 100644 --- a/elixir/apps/web/test/web/live/actors/users/new_identity_test.exs +++ b/elixir/apps/web/test/web/live/actors/users/new_identity_test.exs @@ -56,7 +56,7 @@ defmodule Web.Live.Actors.User.NewIdentityTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/users/#{actor}/new_identity") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ actor.name diff --git a/elixir/apps/web/test/web/live/actors/users/new_test.exs b/elixir/apps/web/test/web/live/actors/users/new_test.exs index a6f3ace61..6f8f80075 100644 --- a/elixir/apps/web/test/web/live/actors/users/new_test.exs +++ b/elixir/apps/web/test/web/live/actors/users/new_test.exs @@ -41,7 +41,7 @@ defmodule Web.Live.Actors.User.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/actors/users/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Actors" assert breadcrumbs =~ "Add" diff --git a/elixir/apps/web/test/web/live/clients/edit_test.exs b/elixir/apps/web/test/web/live/clients/edit_test.exs index 28ce53037..165d3abfc 100644 --- a/elixir/apps/web/test/web/live/clients/edit_test.exs +++ b/elixir/apps/web/test/web/live/clients/edit_test.exs @@ -58,7 +58,7 @@ defmodule Web.Live.Clients.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/clients/#{client}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Clients" assert breadcrumbs =~ client.name diff --git a/elixir/apps/web/test/web/live/clients/index_test.exs b/elixir/apps/web/test/web/live/clients/index_test.exs index c78667935..603ccf453 100644 --- a/elixir/apps/web/test/web/live/clients/index_test.exs +++ b/elixir/apps/web/test/web/live/clients/index_test.exs @@ -37,7 +37,7 @@ defmodule Web.Live.Clients.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/clients") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Clients" end diff --git a/elixir/apps/web/test/web/live/clients/show_test.exs b/elixir/apps/web/test/web/live/clients/show_test.exs index fcfd95e61..55ac4418d 100644 --- a/elixir/apps/web/test/web/live/clients/show_test.exs +++ b/elixir/apps/web/test/web/live/clients/show_test.exs @@ -60,7 +60,7 @@ defmodule Web.Live.Clients.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/clients/#{client}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Clients" assert breadcrumbs =~ client.name diff --git a/elixir/apps/web/test/web/live/gateways/show_test.exs b/elixir/apps/web/test/web/live/gateways/show_test.exs index cc1285473..458755d9b 100644 --- a/elixir/apps/web/test/web/live/gateways/show_test.exs +++ b/elixir/apps/web/test/web/live/gateways/show_test.exs @@ -61,7 +61,7 @@ defmodule Web.Live.Gateways.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/gateways/#{gateway}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Sites" assert breadcrumbs =~ gateway.group.name diff --git a/elixir/apps/web/test/web/live/groups/edit_actors_test.exs b/elixir/apps/web/test/web/live/groups/edit_actors_test.exs index 421378b24..1b097f191 100644 --- a/elixir/apps/web/test/web/live/groups/edit_actors_test.exs +++ b/elixir/apps/web/test/web/live/groups/edit_actors_test.exs @@ -81,7 +81,7 @@ defmodule Web.Live.Groups.EditActorsTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups/#{group}/edit_actors") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Groups" assert breadcrumbs =~ group.name @@ -165,6 +165,7 @@ defmodule Web.Live.Groups.EditActorsTest do lv |> element("tr button", "Add") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#actors") |> table_to_map() @@ -175,6 +176,7 @@ defmodule Web.Live.Groups.EditActorsTest do lv |> element("tr button", "Remove") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#actors") |> table_to_map() diff --git a/elixir/apps/web/test/web/live/groups/edit_test.exs b/elixir/apps/web/test/web/live/groups/edit_test.exs index 89ea87448..0c6fae687 100644 --- a/elixir/apps/web/test/web/live/groups/edit_test.exs +++ b/elixir/apps/web/test/web/live/groups/edit_test.exs @@ -82,7 +82,7 @@ defmodule Web.Live.Groups.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups/#{group}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Groups" assert breadcrumbs =~ group.name diff --git a/elixir/apps/web/test/web/live/groups/index_test.exs b/elixir/apps/web/test/web/live/groups/index_test.exs index 38944eaa8..42f4f5c18 100644 --- a/elixir/apps/web/test/web/live/groups/index_test.exs +++ b/elixir/apps/web/test/web/live/groups/index_test.exs @@ -33,7 +33,7 @@ defmodule Web.Live.Groups.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Groups" end @@ -48,7 +48,11 @@ defmodule Web.Live.Groups.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups") - assert button = Floki.find(html, "a[href='/#{account.slug}/groups/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/groups/new']") + assert Floki.text(button) =~ "Add Group" end @@ -62,7 +66,7 @@ defmodule Web.Live.Groups.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups") - assert form = Floki.find(html, "form#groups-filters") + assert form = html |> Floki.parse_fragment!() |> Floki.find("form#groups-filters") assert ["return event.key != 'Enter';"] = Floki.attribute(form, "onkeydown") end diff --git a/elixir/apps/web/test/web/live/groups/new_test.exs b/elixir/apps/web/test/web/live/groups/new_test.exs index 3f53f389c..1da1ba887 100644 --- a/elixir/apps/web/test/web/live/groups/new_test.exs +++ b/elixir/apps/web/test/web/live/groups/new_test.exs @@ -38,7 +38,7 @@ defmodule Web.Live.Groups.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Groups" assert breadcrumbs =~ "Add" diff --git a/elixir/apps/web/test/web/live/groups/show_test.exs b/elixir/apps/web/test/web/live/groups/show_test.exs index aa81d878a..aee017b28 100644 --- a/elixir/apps/web/test/web/live/groups/show_test.exs +++ b/elixir/apps/web/test/web/live/groups/show_test.exs @@ -58,7 +58,7 @@ defmodule Web.Live.Groups.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/groups/#{group}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Groups" assert breadcrumbs =~ group.name diff --git a/elixir/apps/web/test/web/live/policies/edit_test.exs b/elixir/apps/web/test/web/live/policies/edit_test.exs index ea3e3a101..333111106 100644 --- a/elixir/apps/web/test/web/live/policies/edit_test.exs +++ b/elixir/apps/web/test/web/live/policies/edit_test.exs @@ -68,7 +68,7 @@ defmodule Web.Live.Policies.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/policies/#{policy}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Policies" assert breadcrumbs =~ policy.actor_group.name diff --git a/elixir/apps/web/test/web/live/policies/index_test.exs b/elixir/apps/web/test/web/live/policies/index_test.exs index b490401c5..ce5f3910c 100644 --- a/elixir/apps/web/test/web/live/policies/index_test.exs +++ b/elixir/apps/web/test/web/live/policies/index_test.exs @@ -34,7 +34,7 @@ defmodule Web.Live.Policies.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/policies") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Policies" end @@ -49,7 +49,11 @@ defmodule Web.Live.Policies.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/policies") - assert button = Floki.find(html, "a[href='/#{account.slug}/policies/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/policies/new']") + assert Floki.text(button) =~ "Add Policy" end diff --git a/elixir/apps/web/test/web/live/policies/new_test.exs b/elixir/apps/web/test/web/live/policies/new_test.exs index 94a28cd57..9e977d6e0 100644 --- a/elixir/apps/web/test/web/live/policies/new_test.exs +++ b/elixir/apps/web/test/web/live/policies/new_test.exs @@ -40,7 +40,7 @@ defmodule Web.Live.Policies.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/policies/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Policies" assert breadcrumbs =~ "Add" @@ -94,11 +94,15 @@ defmodule Web.Live.Policies.NewTest do html = render(form) - disabled_input = Floki.find(html, "input[name='policy[actor_group_id]_name']") + disabled_input = + html |> Floki.parse_fragment!() |> Floki.find("input[name='policy[actor_group_id]_name']") + assert Floki.attribute(disabled_input, "disabled") == [""] assert Floki.attribute(disabled_input, "value") == [actor_group.name] - value_input = Floki.find(html, "input[name='policy[actor_group_id]']") + value_input = + html |> Floki.parse_fragment!() |> Floki.find("input[name='policy[actor_group_id]']") + assert Floki.attribute(value_input, "value") == [actor_group.id] end @@ -150,11 +154,15 @@ defmodule Web.Live.Policies.NewTest do html = render(form) - disabled_input = Floki.find(html, "input[name='policy[resource_id]_name']") + disabled_input = + html |> Floki.parse_fragment!() |> Floki.find("input[name='policy[resource_id]_name']") + assert Floki.attribute(disabled_input, "disabled") == [""] assert Floki.attribute(disabled_input, "value") == [resource.name] - value_input = Floki.find(html, "input[name='policy[resource_id]']") + value_input = + html |> Floki.parse_fragment!() |> Floki.find("input[name='policy[resource_id]']") + assert Floki.attribute(value_input, "value") == [resource.id] end diff --git a/elixir/apps/web/test/web/live/policies/show_test.exs b/elixir/apps/web/test/web/live/policies/show_test.exs index 0083c2347..15be57dd1 100644 --- a/elixir/apps/web/test/web/live/policies/show_test.exs +++ b/elixir/apps/web/test/web/live/policies/show_test.exs @@ -101,7 +101,7 @@ defmodule Web.Live.Policies.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/policies/#{policy}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Policies" assert breadcrumbs =~ policy.actor_group.name diff --git a/elixir/apps/web/test/web/live/relay_groups/edit_test.exs b/elixir/apps/web/test/web/live/relay_groups/edit_test.exs index 8bd0e81f3..cbf04e09b 100644 --- a/elixir/apps/web/test/web/live/relay_groups/edit_test.exs +++ b/elixir/apps/web/test/web/live/relay_groups/edit_test.exs @@ -58,7 +58,7 @@ defmodule Web.Live.RelayGroups.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/relay_groups/#{group}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Relay Instance Groups" assert breadcrumbs =~ group.name diff --git a/elixir/apps/web/test/web/live/relay_groups/index_test.exs b/elixir/apps/web/test/web/live/relay_groups/index_test.exs index f6820eb8e..94f92df0f 100644 --- a/elixir/apps/web/test/web/live/relay_groups/index_test.exs +++ b/elixir/apps/web/test/web/live/relay_groups/index_test.exs @@ -37,7 +37,7 @@ defmodule Web.Live.RelayGroups.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/relay_groups") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Relay Instance Groups" end @@ -52,7 +52,11 @@ defmodule Web.Live.RelayGroups.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/relay_groups") - assert button = Floki.find(html, "a[href='/#{account.slug}/relay_groups/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/relay_groups/new']") + assert Floki.text(button) =~ "Add Instance Group" end diff --git a/elixir/apps/web/test/web/live/relay_groups/new_test.exs b/elixir/apps/web/test/web/live/relay_groups/new_test.exs index 6d6b1b96b..364e672b0 100644 --- a/elixir/apps/web/test/web/live/relay_groups/new_test.exs +++ b/elixir/apps/web/test/web/live/relay_groups/new_test.exs @@ -38,7 +38,7 @@ defmodule Web.Live.RelayGroups.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/relay_groups/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Relay Instance Groups" assert breadcrumbs =~ "Add" diff --git a/elixir/apps/web/test/web/live/relay_groups/show_test.exs b/elixir/apps/web/test/web/live/relay_groups/show_test.exs index 8127003ff..84bf03de2 100644 --- a/elixir/apps/web/test/web/live/relay_groups/show_test.exs +++ b/elixir/apps/web/test/web/live/relay_groups/show_test.exs @@ -63,7 +63,7 @@ defmodule Web.Live.RelayGroups.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/relay_groups/#{group}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Relay Instance Groups" assert breadcrumbs =~ group.name diff --git a/elixir/apps/web/test/web/live/relays/show_test.exs b/elixir/apps/web/test/web/live/relays/show_test.exs index 180b1f2f9..ab0f2a0ee 100644 --- a/elixir/apps/web/test/web/live/relays/show_test.exs +++ b/elixir/apps/web/test/web/live/relays/show_test.exs @@ -61,7 +61,7 @@ defmodule Web.Live.Relays.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/relays/#{relay}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Relay Instance Groups" assert breadcrumbs =~ relay.group.name diff --git a/elixir/apps/web/test/web/live/resources/edit_test.exs b/elixir/apps/web/test/web/live/resources/edit_test.exs index e901a1af0..cda1742e6 100644 --- a/elixir/apps/web/test/web/live/resources/edit_test.exs +++ b/elixir/apps/web/test/web/live/resources/edit_test.exs @@ -68,7 +68,7 @@ defmodule Web.Live.Resources.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources/#{resource}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Resources" assert breadcrumbs =~ resource.name diff --git a/elixir/apps/web/test/web/live/resources/index_test.exs b/elixir/apps/web/test/web/live/resources/index_test.exs index 218d5cdf0..a6dfb4918 100644 --- a/elixir/apps/web/test/web/live/resources/index_test.exs +++ b/elixir/apps/web/test/web/live/resources/index_test.exs @@ -34,7 +34,7 @@ defmodule Web.Live.Resources.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Resources" end @@ -49,7 +49,11 @@ defmodule Web.Live.Resources.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources") - assert button = Floki.find(html, "a[href='/#{account.slug}/resources/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/resources/new']") + assert Floki.text(button) =~ "Add Resource" end @@ -65,7 +69,11 @@ defmodule Web.Live.Resources.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources") - assert button = Floki.find(html, "a[href='/#{account.slug}/resources/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/resources/new']") + refute Floki.text(button) =~ "Add Multi-Site Resource" end diff --git a/elixir/apps/web/test/web/live/resources/new_test.exs b/elixir/apps/web/test/web/live/resources/new_test.exs index 92530a7de..274638845 100644 --- a/elixir/apps/web/test/web/live/resources/new_test.exs +++ b/elixir/apps/web/test/web/live/resources/new_test.exs @@ -42,7 +42,7 @@ defmodule Web.Live.Resources.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Resources" assert breadcrumbs =~ "Add Resource" diff --git a/elixir/apps/web/test/web/live/resources/show_test.exs b/elixir/apps/web/test/web/live/resources/show_test.exs index f1875278b..1bf1dec2c 100644 --- a/elixir/apps/web/test/web/live/resources/show_test.exs +++ b/elixir/apps/web/test/web/live/resources/show_test.exs @@ -93,7 +93,7 @@ defmodule Web.Live.Resources.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources/#{resource}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Resources" assert breadcrumbs =~ resource.name @@ -183,7 +183,7 @@ defmodule Web.Live.Resources.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/resources/#{resource}") - assert Floki.find(html, "a[href='https://example.com']") + assert html |> Floki.parse_fragment!() |> Floki.find("a[href='https://example.com']") end test "renders traffic filters on show page even when traffic filters disabled", %{ diff --git a/elixir/apps/web/test/web/live/settings/account/notifications_edit_test.exs b/elixir/apps/web/test/web/live/settings/account/notifications_edit_test.exs index 94364ac80..cabc1369d 100644 --- a/elixir/apps/web/test/web/live/settings/account/notifications_edit_test.exs +++ b/elixir/apps/web/test/web/live/settings/account/notifications_edit_test.exs @@ -48,7 +48,7 @@ defmodule Web.Live.Settings.Account.NotificationsEditTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/account/notifications/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Account Settings" assert breadcrumbs =~ "Edit Notifications" diff --git a/elixir/apps/web/test/web/live/settings/account_test.exs b/elixir/apps/web/test/web/live/settings/account_test.exs index 6e0d81805..947b5b208 100644 --- a/elixir/apps/web/test/web/live/settings/account_test.exs +++ b/elixir/apps/web/test/web/live/settings/account_test.exs @@ -48,7 +48,7 @@ defmodule Web.Live.Settings.AccountTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/account") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Account Settings" end diff --git a/elixir/apps/web/test/web/live/settings/api_clients/beta_test.exs b/elixir/apps/web/test/web/live/settings/api_clients/beta_test.exs index 6352d9a07..3bce94f97 100644 --- a/elixir/apps/web/test/web/live/settings/api_clients/beta_test.exs +++ b/elixir/apps/web/test/web/live/settings/api_clients/beta_test.exs @@ -53,7 +53,7 @@ defmodule Web.Live.Settings.ApiClients.BetaTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients/beta") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "API Clients" assert breadcrumbs =~ "Beta" @@ -84,6 +84,7 @@ defmodule Web.Live.Settings.ApiClients.BetaTest do assert lv |> element("#beta-request") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "request to join" diff --git a/elixir/apps/web/test/web/live/settings/api_clients/edit_test.exs b/elixir/apps/web/test/web/live/settings/api_clients/edit_test.exs index 052b27e95..2c1a958ad 100644 --- a/elixir/apps/web/test/web/live/settings/api_clients/edit_test.exs +++ b/elixir/apps/web/test/web/live/settings/api_clients/edit_test.exs @@ -57,7 +57,7 @@ defmodule Web.Live.Settings.ApiClients.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients/#{api_client}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "API Clients" assert breadcrumbs =~ api_client.name diff --git a/elixir/apps/web/test/web/live/settings/api_clients/index_test.exs b/elixir/apps/web/test/web/live/settings/api_clients/index_test.exs index 1a274b19c..1dacc5b8d 100644 --- a/elixir/apps/web/test/web/live/settings/api_clients/index_test.exs +++ b/elixir/apps/web/test/web/live/settings/api_clients/index_test.exs @@ -55,7 +55,7 @@ defmodule Web.Live.Settings.ApiClients.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "API Clients" end @@ -70,7 +70,11 @@ defmodule Web.Live.Settings.ApiClients.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients") - assert button = Floki.find(html, "a[href='/#{account.slug}/settings/api_clients/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/settings/api_clients/new']") + assert Floki.text(button) =~ "Add API Client" end diff --git a/elixir/apps/web/test/web/live/settings/api_clients/new_test.exs b/elixir/apps/web/test/web/live/settings/api_clients/new_test.exs index 573530bd8..c2b2e1f75 100644 --- a/elixir/apps/web/test/web/live/settings/api_clients/new_test.exs +++ b/elixir/apps/web/test/web/live/settings/api_clients/new_test.exs @@ -56,7 +56,7 @@ defmodule Web.Live.Settings.ApiClient.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "API Clients" assert breadcrumbs =~ "Add" diff --git a/elixir/apps/web/test/web/live/settings/api_clients/new_token_test.exs b/elixir/apps/web/test/web/live/settings/api_clients/new_token_test.exs index 2d563bebd..64d5d530b 100644 --- a/elixir/apps/web/test/web/live/settings/api_clients/new_token_test.exs +++ b/elixir/apps/web/test/web/live/settings/api_clients/new_token_test.exs @@ -42,7 +42,7 @@ defmodule Web.Live.Settings.ApiClient.NewTokenTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients/#{api_client}/new_token") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "API Clients" assert breadcrumbs =~ api_client.name @@ -141,7 +141,9 @@ defmodule Web.Live.Settings.ApiClient.NewTokenTest do assert html =~ "Store this in a safe place." assert html =~ "It won't be shown again." - assert Floki.find(html, "code") + assert html + |> Floki.parse_fragment!() + |> Floki.find("code") |> element_to_text() |> String.trim() |> String.first() == "." diff --git a/elixir/apps/web/test/web/live/settings/api_clients/show_test.exs b/elixir/apps/web/test/web/live/settings/api_clients/show_test.exs index eaf2beaaf..f6e8a0866 100644 --- a/elixir/apps/web/test/web/live/settings/api_clients/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/api_clients/show_test.exs @@ -58,7 +58,7 @@ defmodule Web.Live.Settings.ApiClients.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/api_clients/#{api_client}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "API Clients" assert breadcrumbs =~ api_client.name @@ -160,6 +160,7 @@ defmodule Web.Live.Settings.ApiClients.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "API Client was disabled." @@ -184,6 +185,7 @@ defmodule Web.Live.Settings.ApiClients.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find(".flash-info") |> element_to_text() =~ "API Client was enabled." diff --git a/elixir/apps/web/test/web/live/settings/billing_test.exs b/elixir/apps/web/test/web/live/settings/billing_test.exs index 53dd4c309..d9c5f7ba6 100644 --- a/elixir/apps/web/test/web/live/settings/billing_test.exs +++ b/elixir/apps/web/test/web/live/settings/billing_test.exs @@ -53,7 +53,7 @@ defmodule Web.Live.Settings.BillingTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/billing") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Billing" end diff --git a/elixir/apps/web/test/web/live/settings/dns_test.exs b/elixir/apps/web/test/web/live/settings/dns_test.exs index f531eb173..8e808a887 100644 --- a/elixir/apps/web/test/web/live/settings/dns_test.exs +++ b/elixir/apps/web/test/web/live/settings/dns_test.exs @@ -35,7 +35,7 @@ defmodule Web.Live.Settings.DNSTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/dns") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "DNS Settings" end diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/google_workspace/show_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/google_workspace/show_test.exs index bc5b5be43..9782c15c6 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/google_workspace/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/google_workspace/show_test.exs @@ -64,7 +64,7 @@ defmodule Web.Live.Settings.IdentityProviders.GoogleWorkspace.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers/google_workspace/#{provider}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers Settings" assert breadcrumbs =~ provider.name @@ -234,6 +234,7 @@ defmodule Web.Live.Settings.IdentityProviders.GoogleWorkspace.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Disabled" @@ -241,6 +242,7 @@ defmodule Web.Live.Settings.IdentityProviders.GoogleWorkspace.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Active" @@ -279,6 +281,7 @@ defmodule Web.Live.Settings.IdentityProviders.GoogleWorkspace.ShowTest do assert lv |> element("a", "Reconnect") |> render() + |> Floki.parse_fragment!() |> Floki.attribute("href") |> hd() == ~p"/#{account.id}/settings/identity_providers/google_workspace/#{provider}/redirect" diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/index_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/index_test.exs index bd1cb349d..cd7db01f0 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/index_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/index_test.exs @@ -44,7 +44,7 @@ defmodule Web.Live.Settings.IdentityProviders.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers" end @@ -59,7 +59,11 @@ defmodule Web.Live.Settings.IdentityProviders.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers") - assert button = Floki.find(html, "a[href='/#{account.slug}/settings/identity_providers/new']") + assert button = + html + |> Floki.parse_fragment!() + |> Floki.find("a[href='/#{account.slug}/settings/identity_providers/new']") + assert Floki.text(button) =~ "Add Identity Provider" end @@ -70,7 +74,7 @@ defmodule Web.Live.Settings.IdentityProviders.IndexTest do |> live(~p"/#{account}/settings/identity_providers") assert Floki.text(html) =~ "Default Authentication Provider" - assert form = Floki.find(html, "form#default-provider-form") + assert form = html |> Floki.parse_fragment!() |> Floki.find("form#default-provider-form") assert Floki.text(form) =~ "When selected, users signing in from the Firezone client will be taken directly to this provider for authentication." @@ -99,6 +103,7 @@ defmodule Web.Live.Settings.IdentityProviders.IndexTest do # Assert the default provider is set assert html + |> Floki.parse_fragment!() |> Floki.find("option[selected]") |> Floki.attribute("value") == [to_string(provider.id)] end @@ -130,6 +135,7 @@ defmodule Web.Live.Settings.IdentityProviders.IndexTest do # Assert the default provider is set assert html + |> Floki.parse_fragment!() |> Floki.find("option[selected]") |> Floki.attribute("value") == ["none"] diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/jumpcloud/show_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/jumpcloud/show_test.exs index c7bc5ac6f..6a704d1af 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/jumpcloud/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/jumpcloud/show_test.exs @@ -73,7 +73,7 @@ defmodule Web.Live.Settings.IdentityProviders.JumpCloud.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers/jumpcloud/#{provider}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers Settings" assert breadcrumbs =~ provider.name @@ -268,6 +268,7 @@ defmodule Web.Live.Settings.IdentityProviders.JumpCloud.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Disabled" @@ -275,6 +276,7 @@ defmodule Web.Live.Settings.IdentityProviders.JumpCloud.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Active" @@ -321,6 +323,7 @@ defmodule Web.Live.Settings.IdentityProviders.JumpCloud.ShowTest do assert lv |> element("a", "Reconnect") |> render() + |> Floki.parse_fragment!() |> Floki.attribute("href") |> hd() == ~p"/#{account.id}/settings/identity_providers/jumpcloud/#{provider}/redirect" diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/microsoft_entra/show_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/microsoft_entra/show_test.exs index bcdd9921f..d1293d601 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/microsoft_entra/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/microsoft_entra/show_test.exs @@ -64,7 +64,7 @@ defmodule Web.Live.Settings.IdentityProviders.MicrosoftEntra.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers/microsoft_entra/#{provider}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers Settings" assert breadcrumbs =~ provider.name @@ -235,6 +235,7 @@ defmodule Web.Live.Settings.IdentityProviders.MicrosoftEntra.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Disabled" @@ -242,6 +243,7 @@ defmodule Web.Live.Settings.IdentityProviders.MicrosoftEntra.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Active" @@ -280,6 +282,7 @@ defmodule Web.Live.Settings.IdentityProviders.MicrosoftEntra.ShowTest do assert lv |> element("a", "Reconnect") |> render() + |> Floki.parse_fragment!() |> Floki.attribute("href") |> hd() == ~p"/#{account.id}/settings/identity_providers/microsoft_entra/#{provider}/redirect" diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/okta/show_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/okta/show_test.exs index 4c266985a..5fb1884dc 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/okta/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/okta/show_test.exs @@ -64,7 +64,7 @@ defmodule Web.Live.Settings.IdentityProviders.Okta.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers/okta/#{provider}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers Settings" assert breadcrumbs =~ provider.name @@ -235,6 +235,7 @@ defmodule Web.Live.Settings.IdentityProviders.Okta.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Disabled" @@ -242,6 +243,7 @@ defmodule Web.Live.Settings.IdentityProviders.Okta.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Active" @@ -281,6 +283,7 @@ defmodule Web.Live.Settings.IdentityProviders.Okta.ShowTest do assert lv |> element("a", "Reconnect") |> render() + |> Floki.parse_fragment!() |> Floki.attribute("href") |> hd() == ~p"/#{account.id}/settings/identity_providers/okta/#{provider}/redirect" diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/openid_connect/show_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/openid_connect/show_test.exs index 56f526beb..c09cef8e1 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/openid_connect/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/openid_connect/show_test.exs @@ -63,7 +63,7 @@ defmodule Web.Live.Settings.IdentityProviders.OpenIDConnect.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers/openid_connect/#{provider}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers Settings" assert breadcrumbs =~ provider.name @@ -133,6 +133,7 @@ defmodule Web.Live.Settings.IdentityProviders.OpenIDConnect.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Disabled" @@ -140,6 +141,7 @@ defmodule Web.Live.Settings.IdentityProviders.OpenIDConnect.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Active" @@ -179,6 +181,7 @@ defmodule Web.Live.Settings.IdentityProviders.OpenIDConnect.ShowTest do assert lv |> element("a", "Reconnect") |> render() + |> Floki.parse_fragment!() |> Floki.attribute("href") |> hd() == ~p"/#{account.id}/settings/identity_providers/openid_connect/#{provider}/redirect" diff --git a/elixir/apps/web/test/web/live/settings/identity_providers/system/show_test.exs b/elixir/apps/web/test/web/live/settings/identity_providers/system/show_test.exs index a0dc6c849..713cbe578 100644 --- a/elixir/apps/web/test/web/live/settings/identity_providers/system/show_test.exs +++ b/elixir/apps/web/test/web/live/settings/identity_providers/system/show_test.exs @@ -61,7 +61,7 @@ defmodule Web.Live.Settings.IdentityProviders.System.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers/system/#{provider}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Identity Providers Settings" assert breadcrumbs =~ provider.name @@ -126,6 +126,7 @@ defmodule Web.Live.Settings.IdentityProviders.System.ShowTest do assert lv |> element("button[type=submit]", "Disable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Disabled" @@ -133,6 +134,7 @@ defmodule Web.Live.Settings.IdentityProviders.System.ShowTest do assert lv |> element("button[type=submit]", "Enable") |> render_click() + |> Floki.parse_fragment!() |> Floki.find("#provider") |> vertical_table_to_map() |> Map.fetch!("status") == "Active" diff --git a/elixir/apps/web/test/web/live/sidebar_test.exs b/elixir/apps/web/test/web/live/sidebar_test.exs index d5b14dd77..2ff374c59 100644 --- a/elixir/apps/web/test/web/live/sidebar_test.exs +++ b/elixir/apps/web/test/web/live/sidebar_test.exs @@ -19,7 +19,12 @@ defmodule Web.SidebarTest do identity: identity } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/actors") - refute Enum.empty?(Floki.find(html, "ul#dropdown-settings.hidden")) + + refute Enum.empty?( + html + |> Floki.parse_fragment!() + |> Floki.find("ul#dropdown-settings.hidden") + ) end test "shows dropdown when path is within dropdown children", %{ @@ -28,8 +33,14 @@ defmodule Web.SidebarTest do identity: identity } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/settings/dns") - assert Enum.empty?(Floki.find(html, "ul#dropdown-settings.hidden")) - refute Enum.empty?(Floki.find(html, "ul#dropdown-settings")) + + assert Enum.empty?( + html + |> Floki.parse_fragment!() + |> Floki.find("ul#dropdown-settings.hidden") + ) + + refute Enum.empty?(html |> Floki.parse_fragment!() |> Floki.find("ul#dropdown-settings")) end test "renders proper active sidebar item class for actors", %{ @@ -38,7 +49,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/actors") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/actors']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/actors']") + assert String.trim(Floki.text(item)) == "Actors" end @@ -48,7 +64,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/groups") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/groups']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/groups']") + assert String.trim(Floki.text(item)) == "Groups" end @@ -58,7 +79,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/clients") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/clients']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/clients']") + assert String.trim(Floki.text(item)) == "Clients" end @@ -68,7 +94,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/sites") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/sites']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/sites']") + assert String.trim(Floki.text(item)) == "Sites" end @@ -78,7 +109,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/relay_groups") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/relay_groups']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/relay_groups']") + assert String.trim(Floki.text(item)) == "Relays" end @@ -88,7 +124,7 @@ defmodule Web.SidebarTest do # conn: conn # } do # {:ok, _lv, html} = conn |> authorize_conn(identity) |> live( ~p"/#{account}/resources") - # assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/resources']") + # assert item = html |> Floki.parse_fragment!() |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/resources']") # assert String.trim(Floki.text(item)) == "Resources" # end @@ -98,7 +134,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/policies") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/policies']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/policies']") + assert String.trim(Floki.text(item)) == "Policies" end @@ -108,7 +149,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/settings/account") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/settings/account']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/settings/account']") + assert String.trim(Floki.text(item)) == "Account" end @@ -121,10 +167,9 @@ defmodule Web.SidebarTest do conn |> authorize_conn(identity) |> live(~p"/#{account}/settings/identity_providers") assert item = - Floki.find( - html, - "a.bg-neutral-50[href='/#{account.slug}/settings/identity_providers']" - ) + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/settings/identity_providers']") assert String.trim(Floki.text(item)) == "Identity Providers" end @@ -141,10 +186,9 @@ defmodule Web.SidebarTest do ) assert item = - Floki.find( - html, - "a.bg-neutral-50[href='/#{account.slug}/settings/identity_providers']" - ) + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/settings/identity_providers']") assert String.trim(Floki.text(item)) == "Identity Providers" end @@ -155,7 +199,12 @@ defmodule Web.SidebarTest do conn: conn } do {:ok, _lv, html} = conn |> authorize_conn(identity) |> live(~p"/#{account}/settings/dns") - assert item = Floki.find(html, "a.bg-neutral-50[href='/#{account.slug}/settings/dns']") + + assert item = + html + |> Floki.parse_fragment!() + |> Floki.find("a.bg-neutral-50[href='/#{account.slug}/settings/dns']") + assert String.trim(Floki.text(item)) == "DNS" end end diff --git a/elixir/apps/web/test/web/live/sites/edit_test.exs b/elixir/apps/web/test/web/live/sites/edit_test.exs index f55f6f00a..2a7a066af 100644 --- a/elixir/apps/web/test/web/live/sites/edit_test.exs +++ b/elixir/apps/web/test/web/live/sites/edit_test.exs @@ -58,7 +58,7 @@ defmodule Web.Live.Sites.EditTest do |> authorize_conn(identity) |> live(~p"/#{account}/sites/#{group}/edit") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Sites" assert breadcrumbs =~ group.name diff --git a/elixir/apps/web/test/web/live/sites/gateways/index_test.exs b/elixir/apps/web/test/web/live/sites/gateways/index_test.exs index d0e747afd..5e72b42a1 100644 --- a/elixir/apps/web/test/web/live/sites/gateways/index_test.exs +++ b/elixir/apps/web/test/web/live/sites/gateways/index_test.exs @@ -40,7 +40,7 @@ defmodule Web.Live.Sites.Gateways.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/sites/#{group}/gateways") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Sites" end diff --git a/elixir/apps/web/test/web/live/sites/index_test.exs b/elixir/apps/web/test/web/live/sites/index_test.exs index 72f967a97..ec6735497 100644 --- a/elixir/apps/web/test/web/live/sites/index_test.exs +++ b/elixir/apps/web/test/web/live/sites/index_test.exs @@ -33,7 +33,7 @@ defmodule Web.Live.Sites.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/sites") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Sites" end @@ -48,7 +48,9 @@ defmodule Web.Live.Sites.IndexTest do |> authorize_conn(identity) |> live(~p"/#{account}/sites") - assert button = Floki.find(html, "a[href='/#{account.slug}/sites/new']") + assert button = + html |> Floki.parse_fragment!() |> Floki.find("a[href='/#{account.slug}/sites/new']") + assert Floki.text(button) =~ "Add Site" end diff --git a/elixir/apps/web/test/web/live/sites/new_test.exs b/elixir/apps/web/test/web/live/sites/new_test.exs index 95017bb21..2d978ea45 100644 --- a/elixir/apps/web/test/web/live/sites/new_test.exs +++ b/elixir/apps/web/test/web/live/sites/new_test.exs @@ -38,7 +38,7 @@ defmodule Web.Live.Sites.NewTest do |> authorize_conn(identity) |> live(~p"/#{account}/sites/new") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Sites" assert breadcrumbs =~ "Add" diff --git a/elixir/apps/web/test/web/live/sites/show_test.exs b/elixir/apps/web/test/web/live/sites/show_test.exs index fd250f86a..975fe5754 100644 --- a/elixir/apps/web/test/web/live/sites/show_test.exs +++ b/elixir/apps/web/test/web/live/sites/show_test.exs @@ -63,7 +63,7 @@ defmodule Web.Live.Sites.ShowTest do |> authorize_conn(identity) |> live(~p"/#{account}/sites/#{group}") - assert item = Floki.find(html, "[aria-label='Breadcrumb']") + assert item = html |> Floki.parse_fragment!() |> Floki.find("[aria-label='Breadcrumb']") breadcrumbs = String.trim(Floki.text(item)) assert breadcrumbs =~ "Sites" assert breadcrumbs =~ group.name diff --git a/elixir/apps/web/test/web/live_table_test.exs b/elixir/apps/web/test/web/live_table_test.exs index 99412ba03..02420e785 100644 --- a/elixir/apps/web/test/web/live_table_test.exs +++ b/elixir/apps/web/test/web/live_table_test.exs @@ -34,22 +34,27 @@ defmodule Web.LiveTableTest do html = render_component(&live_table/1, assigns) assert html + |> Floki.parse_fragment!() |> Floki.find("table") |> Floki.attribute("id") == ["table-id"] assert html + |> Floki.parse_fragment!() |> Floki.find("table thead") |> Floki.attribute("id") == ["table-id-header"] assert html + |> Floki.parse_fragment!() |> Floki.find("th") |> Floki.text() =~ "name" assert html + |> Floki.parse_fragment!() |> Floki.find("table tbody") |> Floki.attribute("id") == ["table-id-rows"] assert html + |> Floki.parse_fragment!() |> Floki.find("td") |> Floki.text() =~ "foo" end @@ -69,16 +74,17 @@ defmodule Web.LiveTableTest do form = render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("form") assert Floki.attribute(form, "id") == ["table-id-filters"] assert Floki.attribute(form, "phx-change") == ["filter"] - input = Floki.find(form, "input[type=hidden]") + input = form |> Floki.find("input[type=hidden]") assert Floki.attribute(input, "name") == ["table_id"] assert Floki.attribute(input, "value") == ["table-id"] - input = Floki.find(form, "input[type=text]") + input = form |> Floki.find("input[type=text]") assert Floki.attribute(input, "id") == ["table-id_search"] assert Floki.attribute(input, "name") == ["table-id[search]"] assert Floki.attribute(input, "placeholder") == ["Search by Query"] @@ -100,16 +106,17 @@ defmodule Web.LiveTableTest do form = render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("form") assert Floki.attribute(form, "id") == ["table-id-filters"] assert Floki.attribute(form, "phx-change") == ["filter"] - input = Floki.find(form, "input[type=hidden]") + input = form |> Floki.find("input[type=hidden]") assert Floki.attribute(input, "name") == ["table_id"] assert Floki.attribute(input, "value") == ["table-id"] - input = Floki.find(form, "input[type=text]") + input = form |> Floki.find("input[type=text]") assert Floki.attribute(input, "id") == ["table-id_email"] assert Floki.attribute(input, "name") == ["table-id[email]"] assert Floki.attribute(input, "placeholder") == ["Search by Email"] @@ -136,16 +143,17 @@ defmodule Web.LiveTableTest do form = render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("form") assert Floki.attribute(form, "id") == ["table-id-filters"] assert Floki.attribute(form, "phx-change") == ["filter"] - input = Floki.find(form, "input[type=hidden]") + input = form |> Floki.find("input[type=hidden]") assert Floki.attribute(input, "name") == ["table_id"] assert Floki.attribute(input, "value") == ["table-id"] - select = Floki.find(form, "select") + select = form |> Floki.find("select") assert Floki.attribute(select, "id") == ["table-id_id"] assert Floki.attribute(select, "name") == ["table-id[id]"] @@ -177,16 +185,17 @@ defmodule Web.LiveTableTest do form = render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("form") assert Floki.attribute(form, "id") == ["table-id-filters"] assert Floki.attribute(form, "phx-change") == ["filter"] - input = Floki.find(form, "input[type=hidden]") + input = form |> Floki.find("input[type=hidden]") assert Floki.attribute(input, "name") == ["table_id"] assert Floki.attribute(input, "value") == ["table-id"] - radio = Floki.find(form, "input[type=radio]") + radio = form |> Floki.find("input[type=radio]") assert Floki.attribute(radio, "id") == [ "table-id-btn-__all__", @@ -226,16 +235,17 @@ defmodule Web.LiveTableTest do form = render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("form") assert Floki.attribute(form, "id") == ["table-id-filters"] assert Floki.attribute(form, "phx-change") == ["filter"] - input = Floki.find(form, "input[type=hidden]") + input = form |> Floki.find("input[type=hidden]") assert Floki.attribute(input, "name") == ["table_id"] assert Floki.attribute(input, "value") == ["table-id"] - radio = Floki.find(form, "input[type=checkbox]") + radio = form |> Floki.find("input[type=checkbox]") assert Floki.attribute(radio, "id") == [ "table-id-btn-__all__", @@ -279,16 +289,17 @@ defmodule Web.LiveTableTest do form = render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("form") assert Floki.attribute(form, "id") == ["table-id-filters"] assert Floki.attribute(form, "phx-change") == ["filter"] - input = Floki.find(form, "input[type=hidden]") + input = form |> Floki.find("input[type=hidden]") assert Floki.attribute(input, "name") == ["table_id"] assert Floki.attribute(input, "value") == ["table-id"] - select = Floki.find(form, "select") + select = form |> Floki.find("select") assert Floki.attribute(select, "id") == ["table-id_select"] assert Floki.attribute(select, "name") == ["table-id[select]"] @@ -309,7 +320,7 @@ defmodule Web.LiveTableTest do test "renders ordering buttons", %{assigns: assigns} do # default order when it's unset html = render_component(&live_table/1, assigns) - order_button = Floki.find(html, "th button") + order_button = html |> Floki.parse_fragment!() |> Floki.find("th button") assert Floki.attribute(order_button, "phx-click") == ["order_by"] assert Floki.attribute(order_button, "phx-value-table_id") == ["table-id"] assert Floki.attribute(order_button, "phx-value-order_by") == ["assoc:asc:name"] @@ -317,12 +328,13 @@ defmodule Web.LiveTableTest do # current order if it's set assigns = %{assigns | ordered_by: {:assoc, :desc, :name}} html = render_component(&live_table/1, assigns) - order_button = Floki.find(html, "th button") + order_button = html |> Floki.parse_fragment!() |> Floki.find("th button") assert Floki.attribute(order_button, "phx-value-order_by") == ["assoc:desc:name"] end test "renders page size and total count", %{assigns: assigns} do assert render_component(&live_table/1, assigns) + |> Floki.parse_fragment!() |> Floki.find("nav > span") |> Floki.text() |> String.replace(~r/[\s]+/, " ") =~ "Showing 1 of 1" @@ -332,6 +344,7 @@ defmodule Web.LiveTableTest do | metadata: %{assigns.metadata | count: 10, limit: 100}, rows: Enum.map(1..10, fn _i -> ["foo"] end) }) + |> Floki.parse_fragment!() |> Floki.find("nav > span") |> Floki.text() |> String.replace(~r/[\s]+/, " ") =~ "Showing 10 of 10" @@ -341,6 +354,7 @@ defmodule Web.LiveTableTest do | metadata: %{assigns.metadata | count: 100, limit: 10}, rows: Enum.map(1..100, fn _i -> ["foo"] end) }) + |> Floki.parse_fragment!() |> Floki.find("nav > span") |> Floki.text() |> String.replace(~r/[\s]+/, " ") =~ "Showing 100 of 100" @@ -350,6 +364,7 @@ defmodule Web.LiveTableTest do html = render_component(&live_table/1, assigns) assert html + |> Floki.parse_fragment!() |> Floki.find("nav button") |> Floki.attribute("disabled") == ["disabled", "disabled"] @@ -357,10 +372,11 @@ defmodule Web.LiveTableTest do html = render_component(&live_table/1, assigns) assert html + |> Floki.parse_fragment!() |> Floki.find("nav button") |> Floki.attribute("disabled") == ["disabled"] - enabled_button = Floki.find(html, "nav button:not([disabled])") + enabled_button = html |> Floki.parse_fragment!() |> Floki.find("nav button:not([disabled])") assert Floki.attribute(enabled_button, "phx-click") == ["paginate"] assert Floki.attribute(enabled_button, "phx-value-cursor") == ["next_cursor"] assert Floki.attribute(enabled_button, "phx-value-table_id") == ["table-id"] @@ -369,10 +385,11 @@ defmodule Web.LiveTableTest do html = render_component(&live_table/1, assigns) assert html + |> Floki.parse_fragment!() |> Floki.find("nav button") |> Floki.attribute("disabled") == [] - enabled_button = Floki.find(html, "nav button:not([disabled])") + enabled_button = html |> Floki.parse_fragment!() |> Floki.find("nav button:not([disabled])") assert "prev_cursor" in Floki.attribute(enabled_button, "phx-value-cursor") end end diff --git a/elixir/mix.exs b/elixir/mix.exs index 7622c3ef9..3dc91b809 100644 --- a/elixir/mix.exs +++ b/elixir/mix.exs @@ -51,7 +51,7 @@ defmodule Firezone.MixProject do {:phoenix, "~> 1.8.1"}, {:phoenix_live_view, "~> 1.1.8"}, {:lazy_html, ">= 0.1.0", only: :test}, - {:floki, "~> 0.37.0"} + {:floki, "~> 0.38.0"} ] end diff --git a/elixir/mix.lock b/elixir/mix.lock index fdd8c91bd..64e7022fb 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -33,7 +33,7 @@ "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, "finch": {:hex, :finch, "0.19.0", "c644641491ea854fc5c1bbaef36bfc764e3f08e7185e1f084e35e0672241b76d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc5324ce209125d1e2fa0fcd2634601c52a787aff1cd33ee833664a5af4ea2b6"}, "fine": {:hex, :fine, "0.1.4", "b19a89c1476c7c57afb5f9314aed5960b5bc95d5277de4cb5ee8e1d1616ce379", [:mix], [], "hexpm", "be3324cc454a42d80951cf6023b9954e9ff27c6daa255483b3e8d608670303f5"}, - "floki": {:hex, :floki, "0.37.1", "d7aaee758c8a5b4a7495799a4260754fec5530d95b9c383c03b27359dea117cf", [:mix], [], "hexpm", "673d040cb594d31318d514590246b6dd587ed341d3b67e17c1c0eb8ce7ca6f04"}, + "floki": {:hex, :floki, "0.38.0", "62b642386fa3f2f90713f6e231da0fa3256e41ef1089f83b6ceac7a3fd3abf33", [:mix], [], "hexpm", "a5943ee91e93fb2d635b612caf5508e36d37548e84928463ef9dd986f0d1abd9"}, "gen_smtp": {:hex, :gen_smtp, "1.3.0", "62c3d91f0dcf6ce9db71bcb6881d7ad0d1d834c7f38c13fa8e952f4104a8442e", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "0b73fbf069864ecbce02fe653b16d3f35fd889d0fdd4e14527675565c39d84e6"}, "gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"}, "gproc": {:hex, :gproc, "0.9.1", "f1df0364423539cf0b80e8201c8b1839e229e5f9b3ccb944c5834626998f5b8c", [:rebar3], [], "hexpm", "905088e32e72127ed9466f0bac0d8e65704ca5e73ee5a62cb073c3117916d507"},