ijdickinson
Link following in Wallaby
I’m trying to write a really basic Wallaby test to check that an anchor link navigates the user to the right page. My link:
<a href="/cases/new-case" class="button button__primary ">
Add a new case
</a>
My test:
session =
session
|> visit(~p"/cases")
|> assert_has(Query.link("Add a new case", count: 1))
|> click(Query.link("Add a new case"))
|> assert_has(..predicates to test new page ...)
The problem is that although the assert_has succeeds, and I can see that the link is visible in the browser, the navigation to the new page does not happen - even if I insert a sleep.
This seems like a pretty basic test automation, so I’m really not sure why the link follow is not working. I know I can just visit() the URL of the destination page, but in this test I want to text the UX of clicking on the link. But I have no hypotheses left to explore as to why the link is not being visited, and would welcome any suggestions.
I’m on Ubuntu, using chromedriver-120.0.6099.109 and an identical version of Google Chrome
Most Liked
ijdickinson
@sodapopcan The additional context, I think, is to do with authentication. The route I’m testing requires user log-in. I’m following this pattern to set a browser cookie as though the user had logged in. From what I can tell, this is allowing me to successfully visit the initial page (/cases/, but not navigate to the second route /cases/new-case), even though both are normally navigable in one session.
I’m only trying the cookie-injection method because I’ve been seeing some non-deterministic failures when I create the same test but replicate the user logging-in at the start of the session. It’s all been a bit frustrating, tbh!
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








