---
# System prepended metadata

title: Test scenario for etherscan registration form

---

# Test scenario for etherscan registration form

* Test the new user registration functionality.

# Test cases
1. String between 5 to 30 character length can only be considered valid username.
2. Username cannot have any symbols or special characters.
3. Email address string should conform to email format.
4. Email address provided in the confirm email text field should be the same as the one provided in previous email field.
5. Passwords provided in both the password field should be same.
6. Capctha should be present on the screen and give error if registration form is submitted without cpatcha completed.

# Choice of tools and technology used to enable automated testing.

There are various automation tools and frameworks available to implement automated testing, like Selenium, cypress and puppeteer , that I am good with.

Each has its own advantages and disadvantages. Cypress and puppeteer are very fast as they execute the tests inside the browser. Selenium is better as it has vast APIs for various actions and operations.

For this project I am choosing Selenium for following reasons

1. Cypress and Puppeteer tests can be written only in Javascript. When there is a team of more than one in QA, I would prefer to have a choice of language in which tests should be written so that all the QAs involved can choose one language that are good at. With my knowledge origin trail already has a QA. Selenium tests can be written in many languages.

2. With recent upgrade to Selenium 4, selenium has brought in a vast number of improvements. To name the important ones, Selenium no more relies on json wire protocol, which has made it faster.  Selenium Grid in its upgraded simplified form is too good to run the tests in remote in any number of browsers parallely, which I have also implemented here.

3. Not in this case, but there are use case in various projects, where we would need to switch between browser tabs/windows. Selenium makes these operations very easy and fast. Cypress doesn't have this feature, while puppeteer is slow and complicated in this regard.

I have also used Docker in my project to help run tests in container in remote selenium grid, for the sole rasons it makes the remote and cross browser testing very fast in containers.

### Next steps

Taking the whole SDLC in perspective, these tests could be very easily integrated with some tweaks to the Deployment pipeline. 

I have added a detailed README.md in the project that elaborates on the framework architecture in depth. Please take a look.