This assignment is designed to assess your skills in quality assurance, attention to detail. Optionally, you have the chance to show off your ability to write end-to-end tests.
You will be provided with a simple React application along with its specifications. Your task is to test the application, identify any discrepancies between the implemented functionality and the specifications, and write a report on your findings.
Additionally, you can opt to implement a couple of basic end-to-end tests for the application.
All together, please do not spend more than 1 - 1.5 hours on this project.
The application is a simple Todo List built with React. It allows users to add, delete, and mark tasks as complete.
The UI is straightforward, consisting of an input field to add new tasks, a list of tasks displaying added tasks with options to mark them as complete or delete them, and a filter feature to view all tasks, only completed tasks, or incomplete tasks.
-
Adding Tasks
- Users can add tasks using the input field at the top.
- Pressing the "Enter" key or clicking the "Add Task" button adds the task to the list.
- The input field should clear upon adding the task.
-
Displaying Tasks
- Tasks should be listed below the input field.
- Each task should have a checkbox to mark it as complete, a task description, and a delete button.
-
Marking Tasks as Complete
- Clicking the checkbox next to a task marks it as complete.
- Completed tasks should display with a
strikethrougheffect on the text.
-
Deleting Tasks
- Clicking the delete button next to a task removes it from the list.
-
Filtering Tasks
- Users can filter tasks to show;
- all tasks,
- only completed tasks,
- or only incomplete tasks.
- Users can filter tasks to show;
Minor differences have been intentionally introduced in the application's implementation from the above specifications. Identify and document these differences in your test report.
-
Test the Application
This is the most important part of the assignment.
- Thoroughly test the application based on the provided specifications.
- Identify any discrepancies between the application's functionality and the specifications.
- Document your findings in a test report, including any bugs or unexpected behavior you observe.
- Along with your documentation, it is recommended to also document the tooling utilized.
-
Write End-to-End Tests
Writing End-to-End Tests is optional. However, it is a bonus to your submission.
- Set up a basic end-to-end test environment in the project. Suggestions include but are not limited;
- TestCafe
- Playwright
- Cypress
- Codecept
- Any other E2E library of your choice
- If you opt to write end-to-end tests. Here are a couple of suggested test cases to start with;
- A test to verify that a user can add a task.
- A test to verify that a user can delete a task.
- Feel free to add more tests as you see relevant based on your findings.
- Set up a basic end-to-end test environment in the project. Suggestions include but are not limited;
- Install project dependencies
-
Clone the repository from GitHub.
-
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open http://localhost:3000 with your browser to see the result.