/frontend-test

Primary LanguageJavaScript

One Blue Button

Welcome. This is a technical test with a real working project. It uses a number of front-end tools and technologies and it tests working knowledge of these tools. While there are a few components in the project, you will be working with the Button component. This test is intended to be submitted in the form of a ZIP or a linked repository or similar.

Instructions

Carefully read the following, think about what is being tested for, and complete the steps for each section. Some sections can be completed and findings documented, while others will be in the form of code changes to this project. If you find that you can't complete a particular section, feel free to share your thinking, anything you tried that did not work, and any resources you used. Take as long as you need, but we would hope not to spend more than an hour or two of your time on this exercise.

Final submission

Please zip your finished project repository into a single file excluding the node_modules directory (.cache, .git and dist are fine to include), and submit it to your primary contact person.

The project

🚧 1. Setup

Get started by checking out the project and running the welcome script.

Please:

  • Clone/install this repository
  • Run the npm script welcome
  • Update the file answers/1-setup.md with responses to the questions you'll find there

We're looking for:

  • Ability to setup an existing front end project
  • Ability to run npm scripts
  • Capability with Git, node/npm

🛠 2. Tooling

You need to onboard a new junior-level developer on the team. Explain to your teammate the tooling for this project.

Please:

  • Examine the project code
  • Update the file answers/2-tooling.md with responses to the questions you'll find there

We're looking for:

  • Ability to clearly and simply explain technical concepts
  • Ability to describe a FE project's tooling
  • Familiarity with common tools and their purpose
  • Understanding of configuration files and their purpose

🔍 3. Code review

We need to figure out what the last change to the code base was.

Please:

  • Investigate the latest set of code changes
  • Update the file answers/3-code-review.md with responses to the questions you'll find there

We're looking for:

  • Capability with Git
  • Ability to describe what has changed in a commit or pull request
  • Ability to infer a developer's intent from the comments and code changes

✏️ 4. JavaScript

We've had an enhancement request that we should be able to render links that look like (and in some ways behave like) buttons but still offer the ability to function like links (i.e., to take you to a different URL). Using the existing Button component, add in the required functionality to allow a button to render as a link. The prop and test stubs present in the project may provide additional context, and examining other components could also be helpful.

Please:

  • Install the dependencies, run the tests, and start the dev server
  • Add functionality to the existing button component to allow it to act like an HTML anchor element (a link)
  • Write the tests in the provided test file to support the new functionality
  • Commit your code changes to the project

We recommend using index.js to make any exploratory test changes to Button instances as this is the only script wired up to rebuild automatically.

We're looking for:

  • Understanding of HTML elements and working with attributes
  • Understanding of Components
  • Ability to read and write JavaScript
  • Ability to test components

🚀 5. HTML & CSS

Our designer has given us a new button design. Load /design-mock.html in a browser to see the prototype.

Please:

  • Implement the blue button as per the design mock
  • Implement the favourite icon functionality for the button based on an isFavourite property and the svg icon supplied in the component
  • Configure the button to open a link to https://www.xero.com
  • Vertically and horizontally center the app in index.html- Create the styles in the stylesheet, following existing conventions
  • Commit your code changes to the project

We're looking for:

  • Ability to write CSS
  • Ability to take proof of concept to a good level of quality
  • Ability to work within existing conventions
  • Capability with SASS

Thank you! Please submit your completed project per prior instructions.