Skip to content

SwCregan/devs-interview

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instructions

Welcome to Hoya Devs' interview project.

In this project, you will need to fix certain bugs within the starter code provided to you.

The bugs do not depend on each other, so you can solve them independently.

You will submit a CodeSandbox or GitHub link with your response.

Prerequisites

Coding

You are free to use any IDE, we would recommend VSCode. If you choose to use an online editor like CodeSandbox, look at these resources.

Run the server locally

  • Run yarn install or npm install
  • Run yarn start
  • The server will be available in http://localhost:3000

Special considerations

Typescript

Hoya Devs primarily uses React and Typescript on our projects.

You are not required to know Typescript and using it in this challenge is optional. We have abstracted most of the Typescript code into its own files (types.ts), so feel free to ignore those. All of the bugs can be solved without Typescript.

If you work on the CodeSandbox, you can ignore any warnings on the code as long it works in the browser. However, feel free to write any Typescript code if your feel comfortable.

If you work locally, TSC_COMPLE_ON_ERROR flag is set to true by default. However, if you feel comfortable with Typescript, feel free to remove it on .env and to write any Typescript code.

API

We don't have a real API for this challenge, so we added some utilities to simulate API requests. To help you debug, we console.log the status of the ongoing simulated requests. You will not be able to see these requests in the network tab of your browser.

Solution

  • Solutions can be HTML, CSS or Javascript oriented, depending on the bug and your solution.
  • Modify any file inside the src folder as long as the expected result is correct.
  • The goal is to solve the bug as expected. Finding a clean and efficient solution is a nice to have, but not required.
  • Except for the last one, the first bugs don't depend on each other and can be solved in any order.
    • We recommend reading all the descriptions first. You might find the solution to one bug while trying to fix another.
    • The last bug will need other bugs to be fixed first in order to be reproduced.
  • You cannot add any external dependency to the project. The bugs can be solved with vanilla HTML, CSS and Javascript.

Bug 1: Select dropdown doesn't scroll with rest of the page

How to reproduce:

  1. Make your viewport smaller in height. Small enough to have a scroll bar
  2. Click on the Filter by employee select to open the options dropdown
  3. Scroll down the page

Expected: Options dropdown moves with its parent input as you scroll the page

Actual: Options dropdown stays in the same position as you scroll the page, losing the reference to the select input

Bug 2: Approve checkbox not working

How to reproduce:

  1. Click on the checkbox on the right of any transaction

Expected: Clicking the checkbox toggles its value

Actual: Nothing happens

Bug 3: Cannot select All Employees after selecting an employee

How to reproduce:

  1. Click on the Filter by employee select to open the options dropdown
  2. Select an employee from the list
  3. Click on the Filter by employee select to open the options dropdown
  4. Select All Employees option

Expected: All transactions are loaded

Actual: The page crashes

Bug 4: Clicking on View More button not showing correct data

How to reproduce:

  1. Click on the View more button
  2. Wait until the new data loads

Expected: Initial transactions plus new transactions are shown on the page

Actual: New transactions replace initial transactions, losing initial transactions

Bug 5: Employees filter not available during loading more data

This bug has 2 wrong behaviors that will be fixed with the same solution

Part 1

How to reproduce:

  1. Open devtools to watch the simulated network requests in the console
  2. Refresh the page
  3. Quickly click on the Filter by employee select to open the options dropdown

Expected: The filter should stop showing "Loading employees.." as soon as the request for employees is succeeded

Actual: The filter stops showing "Loading employees.." until paginatedTransactions is succeeded

Part 2

How to reproduce:

  1. Open devtools to watch the simulated network requests in the console
  2. Click on View more button
  3. Quickly click on the Filter by employee select to open the options dropdown

Expected: The employees filter should not show "Loading employees..." after clicking View more, as employees are already loaded

Actual: The employees filter shows "Loading employees..." after clicking View more until new transactions are loaded.

Bug 6: View more button not working as expected

This bug has 2 wrong behaviors that can be fixed with the same solution. It's acceptable to fix with separate solutions as well.

Part 1

How to reproduce:

  1. Click on the Filter by employee select to open the options dropdown
  2. Select an employee from the list
  3. Wait until transactions load

Expected: The View more button is not be visible when transactions are filtered by user, because that is not a paginated request.

Actual: The View more button is visible even when transactions are filtered by employee. You can even click View more button and get an unexpected result

Part 2

How to reproduce:

  1. Click on View more button
  2. Wait until it loads more data
  3. Repeat these steps as many times as you can

Expected: When you reach the end of the data, the View More button disappears and you are not able to request more data.

Actual: When you reach the end of the data, the View More button is still showing and you are still able to click the button. If you click it, the page crashes.

Bug 7: Approving a transaction won't persist the new value

You need to fix some of the previous bugs in order to reproduce

How to reproduce:

  1. Click on the Filter by employee select to open the options dropdown
  2. Select an employee from the list (E.g. James Smith)
  3. Toggle the first transaction (E.g. Uncheck Social Media Ads Inc)
  4. Click on the Filter by employee select to open the options dropdown
  5. Select All Employees option
  6. Verify values
  7. Click on the Filter by employee select to open the options dropdown
  8. Verify values

Expected: In steps 6 and 8, toggled transaction kept the same value it was given in step 2 (E.g. Social Media Ads Inc is unchecked)

Actual: In steps 6 and 8, toggled transaction lost the value given in step 2. (E.g. Social Media Ads Inc is checked again)

Submission

There are two options to submit your work. For either one, please send a link in response to the email you recieved with instructions for this interview.

GitHub

You will submit a link to your GitHub repo with your responses. Make sure your repo is publically available.

CodeSandbox

You will submit a link to a CodeSandbox with your responses. Make sure your CodeSandbox is not Read only and can be edited, otherwise you will be disqualified. See Coding


Callouts

  • Don't remove existing data-testid tags. Otherwise, your results will be invalidated.
  • Other than the bugs, don't modify anything that will have a different outcome. Otherwise, your results might be invalidated.
  • Plagiarism is a serious offense and will result in disqualification from further consideration.

About

Project interview for S26

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 86.4%
  • CSS 12.5%
  • HTML 1.1%