You are given a tiny app with 3 simple pages. Your job is to help us assert whether the behavior of the app is correct and how we could make it easy to test for unexpected changes.
- The 'Login' page has the following fields and buttons:
- 'email' - alphanumeric email input field, required field
- 'password' - alphanumeric input field, required field
- 'Sign in' button
- Link to the 'Register' page with text: 'Don't have an account? Register here.'
- On successful login, the user is redirected to the 'Upload' page.
- If login is not successful, the user remains on the 'Login' page and you should get an UI notification.
Here is a list with the default registered users:
const allUsers = [
{ email: '[email protected]', password: 'normpass', type: 'normal' },
{ email: '[email protected]', password: 'entrpass', type: 'enterprise' },
];
- The 'Register' page has the following fields and buttons:
- 'email' - alphanumeric email input field, max length 50 characters, required field
- 'password' - character input field, min length 3 characters, required field
- 'type' - dropdown field with two options: ['normal', 'enterprise'] with default option 'normal'
- 'Register' button
- Link to the 'Login' page with text: 'Already have an account? Login here(Link on here).'
- On successful registration, the user is redirected to the 'Login' page.
- If registration is not successful, the user remains on the 'Registration' page and should get an UI notification.
- The 'Upload' page has the following fields and buttons:
- 'Twin name' - alphanumeric input field, min length 3 characters, max length 50 characters, required field
- 'Choose File' button that navigates to the file system on the computer
- If no file is selected - 'No file chosen' text is displayed next to the 'Choose File' button.
- If no twin name is entered and the user tries to upload a file UI alert is received.
- If file is selected from your computer - the name of the file and the file extension is displayed next to the 'Choose File' button. Only one file can be uploaded at a time.
- On file select from your computer, the file is uploaded.
- All uploaded files are visible on the 'Upload' page in a separate table for each twin.
- The unique identifier of a twin is its name and adding files for the same twin name will add the file to the existing twin table.
- 'enterprise' users can upload all file types.
- 'normal' users can upload .jpeg files only. If 'normal' user tries to upload another file format, validation message is displayed
- 'Logout' button - redirects to 'Login' page
-
Following the requirements, prepare some test cases for the app at your choice. You can group the test cases in test sets, if you like.
-
Did you manage to find some bugs? Please, report them with a nice and clear bug report. If you could not find a bug on the app, imagine there is one somewhere and create an example bug report.
-
Your last task is to write some automation tests that confirm the required behavior of the app. You can implement the tests in any way you want, but be prepared to explain your decision and the trade off it brings with it.
-
Give QA recommendation that will make the workflow better.
$ git clone https://gitlab.myxrobotics.com/stanislav.nikolov/challenges
$ cd challenges/QA/src
$ npm install
$ node server.mjs
The server is now listening on http://localhost:8080.