Hi all,
In a new automation project, I have a bunch of email address's that I can use to create users against. I can't use randomly made up email addresses as they have to be known to the backend.
Right now, for the purpose of getting something up and running quickly, I have a number of those uses hard-coded into the tests where I need a new user. This if fine for the moment until these tests are run on the CI server as the playwright.config.ts is set to have a maxium of 2 retries.
If a test has already used one of the emails up when creating a user as part of a test and then that test fails at some point after that, the retry will then fail both times because the user has already been created with said email address.
So I need some way to manage a pool of users, whereby each test that needs one, can take it from/off the pool and use it. I am assuming in a CI environment with multiple workers that a race condition is possible, so probably need some kind of locking when removing/adding users in that pool of users.
Has anyone got any tips, tricks, ideas on how to achieve this?
This thread is trying to answer question "How to manage a pool of users for an automation project where each test requires a new user, especially when tests are run on the CI server?"
I solved this type of scenario with the server app that returns unique user data for each request. https://profile.qaplayground.dev/0e65f597-56e9-40a2-822c-f4d6ad5dfd43
Thanks for the replies all.
@whitemc2 Thanks, I will take a look at that.
@captainjetski That is pretty much what I have done as my first approach, but the only issue with this is if a test fails after the user has been added to the AUT, when CI retries, it will immediately fail when attempting to add the user again. I would personally prefer to run with retries turned off but other people want it on.
I did have a tidy up of the user, so if it was successfully added in the test, I would remove the user in AterEach hook (I am using one test per spec file), but as far as I can see, if the test fails, the AfterEach hook does not execute.....I think I need to go back and double check that is that doesn't sound right to me.....
@jaratlanta I could do that and will certainly give it a try. When multiple workers are in use, could there be a possible race condition when I go to update the CSV saying the user has been used?
Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email [email protected].