diff --git a/test/mv_web/components/layouts/sidebar_test.exs b/test/mv_web/components/layouts/sidebar_test.exs index 0975b8f..ff81f24 100644 --- a/test/mv_web/components/layouts/sidebar_test.exs +++ b/test/mv_web/components/layouts/sidebar_test.exs @@ -149,7 +149,9 @@ defmodule MvWeb.Layouts.SidebarTest do assert menu_item_count > 0, "Should have at least one top-level menu item" # Check that nested menu groups exist - assert html =~ ~s(
  • ) + assert html =~ + ~s(
  • ) + assert html =~ ~s(role="group") assert has_class?(html, "expanded-menu-group") @@ -198,7 +200,9 @@ defmodule MvWeb.Layouts.SidebarTest do html = render_sidebar(authenticated_assigns()) # Check for nested menu structure - assert html =~ ~s(
  • ) + assert html =~ + ~s(
  • ) + assert html =~ ~s(role="group") assert html =~ ~s(aria-label="Administration") assert has_class?(html, "expanded-menu-group") @@ -526,7 +530,9 @@ defmodule MvWeb.Layouts.SidebarTest do assert html =~ ~s(role="menuitem") # Check that nested menus exist - assert html =~ ~s(
  • ) + assert html =~ + ~s(
  • ) + assert html =~ ~s(role="group") # Footer section @@ -634,7 +640,9 @@ defmodule MvWeb.Layouts.SidebarTest do html = render_sidebar(authenticated_assigns()) # expanded-menu-group structure present - assert html =~ ~s(
  • ) + assert html =~ + ~s(
  • ) + assert html =~ ~s(role="group") assert html =~ ~s(aria-label="Administration") assert has_class?(html, "expanded-menu-group") @@ -848,7 +856,9 @@ defmodule MvWeb.Layouts.SidebarTest do # Expanded menu group should have correct structure # (CSS handles hover effects, but we verify structure) - assert html =~ ~s(
  • ) + assert html =~ + ~s(
  • ) + assert html =~ ~s(role="group") end diff --git a/test/mv_web/components/sidebar_authorization_test.exs b/test/mv_web/components/sidebar_authorization_test.exs index 234f7cb..079572f 100644 --- a/test/mv_web/components/sidebar_authorization_test.exs +++ b/test/mv_web/components/sidebar_authorization_test.exs @@ -31,7 +31,7 @@ defmodule MvWeb.SidebarAuthorizationTest do assert html =~ ~s(href="/members") assert html =~ ~s(href="/membership_fee_types") - assert html =~ ~s(aria-label="Administration") + assert html =~ ~s(data-testid="sidebar-administration") assert html =~ ~s(href="/users") assert html =~ ~s(href="/groups") assert html =~ ~s(href="/admin/roles") @@ -94,7 +94,7 @@ defmodule MvWeb.SidebarAuthorizationTest do refute html =~ ~s(href="/membership_fee_types") refute html =~ ~s(href="/users") - refute html =~ ~s(aria-label="Administration") + refute html =~ ~s(data-testid="sidebar-administration") end end diff --git a/test/mv_web/live/member_live_authorization_test.exs b/test/mv_web/live/member_live_authorization_test.exs index c8d02b8..9a23019 100644 --- a/test/mv_web/live/member_live_authorization_test.exs +++ b/test/mv_web/live/member_live_authorization_test.exs @@ -8,18 +8,14 @@ defmodule MvWeb.MemberLiveAuthorizationTest do alias Mv.Fixtures - # Use literal strings for button/link text (matches default Gettext locale) - @new_member_text "New Member" - @edit_member_text "Edit Member" - describe "Member Index - Vorstand (read_only)" do @tag role: :read_only test "sees member list but not New Member button", %{conn: conn} do _member = Fixtures.member_fixture() - {:ok, _view, html} = live(conn, "/members") + {:ok, view, _html} = live(conn, "/members") - refute html =~ @new_member_text + refute has_element?(view, "[data-testid=member-new]") end @tag role: :read_only @@ -28,8 +24,8 @@ defmodule MvWeb.MemberLiveAuthorizationTest do {:ok, view, _html} = live(conn, "/members") - refute has_element?(view, "a[href=\"/members/#{member.id}/edit\"]") - refute has_element?(view, "a[phx-click*='delete']") + refute has_element?(view, "#row-#{member.id} [data-testid=member-edit]") + refute has_element?(view, "#row-#{member.id} [data-testid=member-delete]") end end @@ -38,19 +34,19 @@ defmodule MvWeb.MemberLiveAuthorizationTest do test "sees New Member and Edit buttons", %{conn: conn} do member = Fixtures.member_fixture() - {:ok, view, html} = live(conn, "/members") + {:ok, view, _html} = live(conn, "/members") - assert html =~ @new_member_text - assert has_element?(view, "a[href=\"/members/#{member.id}/edit\"]") + assert has_element?(view, "[data-testid=member-new]") + assert has_element?(view, "#row-#{member.id} [data-testid=member-edit]") end @tag role: :normal_user test "does not see Delete button", %{conn: conn} do - _member = Fixtures.member_fixture() + member = Fixtures.member_fixture() {:ok, view, _html} = live(conn, "/members") - refute has_element?(view, "a[phx-click*='delete']") + refute has_element?(view, "#row-#{member.id} [data-testid=member-delete]") end end @@ -59,11 +55,11 @@ defmodule MvWeb.MemberLiveAuthorizationTest do test "sees New Member, Edit and Delete buttons", %{conn: conn} do member = Fixtures.member_fixture() - {:ok, view, html} = live(conn, "/members") + {:ok, view, _html} = live(conn, "/members") - assert html =~ @new_member_text - assert has_element?(view, "a[href=\"/members/#{member.id}/edit\"]") - assert has_element?(view, "a[phx-click*='delete']") + assert has_element?(view, "[data-testid=member-new]") + assert has_element?(view, "#row-#{member.id} [data-testid=member-edit]") + assert has_element?(view, "#row-#{member.id} [data-testid=member-delete]") end end @@ -80,27 +76,27 @@ defmodule MvWeb.MemberLiveAuthorizationTest do test "admin sees Edit button", %{conn: conn} do member = Fixtures.member_fixture() - {:ok, _view, html} = live(conn, "/members/#{member.id}") + {:ok, view, _html} = live(conn, "/members/#{member.id}") - assert html =~ @edit_member_text + assert has_element?(view, "[data-testid=member-edit]") end @tag role: :read_only test "read_only does not see Edit button", %{conn: conn} do member = Fixtures.member_fixture() - {:ok, _view, html} = live(conn, "/members/#{member.id}") + {:ok, view, _html} = live(conn, "/members/#{member.id}") - refute html =~ @edit_member_text + refute has_element?(view, "[data-testid=member-edit]") end @tag role: :normal_user test "normal_user sees Edit button", %{conn: conn} do member = Fixtures.member_fixture() - {:ok, _view, html} = live(conn, "/members/#{member.id}") + {:ok, view, _html} = live(conn, "/members/#{member.id}") - assert html =~ @edit_member_text + assert has_element?(view, "[data-testid=member-edit]") end end end diff --git a/test/mv_web/live/user_live_authorization_test.exs b/test/mv_web/live/user_live_authorization_test.exs index 9c35d87..f4b4746 100644 --- a/test/mv_web/live/user_live_authorization_test.exs +++ b/test/mv_web/live/user_live_authorization_test.exs @@ -8,19 +8,16 @@ defmodule MvWeb.UserLiveAuthorizationTest do alias Mv.Fixtures - @new_user_text "New User" - @edit_user_text "Edit User" - describe "User Index - Admin" do @tag role: :admin test "sees New User, Edit and Delete buttons", %{conn: conn} do user = Fixtures.user_with_role_fixture("admin") - {:ok, view, html} = live(conn, "/users") + {:ok, view, _html} = live(conn, "/users") - assert html =~ @new_user_text - assert has_element?(view, "a[href=\"/users/#{user.id}/edit\"]") - assert has_element?(view, "a[phx-click*='delete']") + assert has_element?(view, "[data-testid=user-new]") + assert has_element?(view, "#row-#{user.id} [data-testid=user-edit]") + assert has_element?(view, "#row-#{user.id} [data-testid=user-delete]") end end @@ -47,25 +44,25 @@ defmodule MvWeb.UserLiveAuthorizationTest do describe "User Show - own profile" do @tag role: :member test "member sees Edit button on own profile", %{conn: conn, current_user: user} do - {:ok, _view, html} = live(conn, "/users/#{user.id}") + {:ok, view, _html} = live(conn, "/users/#{user.id}") - assert html =~ @edit_user_text + assert has_element?(view, "[data-testid=user-edit]") end @tag role: :read_only test "read_only sees Edit button on own profile", %{conn: conn, current_user: user} do - {:ok, _view, html} = live(conn, "/users/#{user.id}") + {:ok, view, _html} = live(conn, "/users/#{user.id}") - assert html =~ @edit_user_text + assert has_element?(view, "[data-testid=user-edit]") end @tag role: :admin test "admin sees Edit button on user show", %{conn: conn} do user = Fixtures.user_with_role_fixture("read_only") - {:ok, _view, html} = live(conn, "/users/#{user.id}") + {:ok, view, _html} = live(conn, "/users/#{user.id}") - assert html =~ @edit_user_text + assert has_element?(view, "[data-testid=user-edit]") end end