Git Product home page Git Product logo

web-module-project-testing-web-apps's Introduction

Integration Testing React Module Project : Contact Form - Testing

This module explored the basics of the react-testing library and ideas behind the integration testing methodology. In this project you will practice how to build tests that follow the arrange-act-assert model, different methods of querying for DOM elements in a test, the use of different expect types and using async/await to test for changes in state.

Testing Web Applications

Objectives

  • explain what automated testing is and its importance
  • use react-testing-library for testing react components
  • use react-testing-library to test user interactions with userEvent
  • use async / await and waitFor to test changes in a components state.

Introduction

In this challenge, you will be writing tests for a contact form that has been built with React.

As a developer, you will be writing tests for every component. As we've learned, tests are a very important part of programming. The tests you will write will help you feel confident in the code you push to production!

Make sure to complete your tasks one at a time and complete test each task before proceding forward.

Instructions

Task 1: Project Set Up

  • Create a forked copy of this project.
  • Clone your OWN version of the repository in your terminal
  • Download project dependencies by running npm install
  • Start up the app using npm start
  • In a new terminal window, run npm test
  • With each saved change in your editor, the test runner will re-run all the tests
  • IMPORTANT If a test fails, use the test runner's error messages to find out why it is failing

Task 2: Project Requirements

All of the work you will do today will be contained inside the ContactForm.test.js file. You will be tasked to write the code for at least 9 different tests on various parts of the ContactForm component. Please read the instructions for each test carefully.

Test Brainstorming

  • Run and play around with the form interface.
  • Write out a list of possible testcases for this application within Understanding-questions.md.

Complete a case that tests if

  • the component renders the contact form component without errors.
  • the header h1 element exists. Include three asserts, if the header is in the document, if the heads is truthy, if the header has the correct test content.
  • the component renders ONE error message if the user enters less than 4 characters into the firstname field. Make sure to use async / await and the correct screen method to account for state change.
  • the component renders THREE error messages if the user submits without filling in any values.
  • the component renders ONE error message if the user submits without filling in the email field.
  • the component renders the text "email must be a valid email address" if an invalid email address is typed into the email field.
  • the component renders the text "lastName is a required field" the form is submitted without a last name.
  • the component renders the firstname, lastname and email text when submitted with valued fields and does not render a message value when one is not entered into the message field.
  • renders all fields when the user submits with valid text filled in for all fields.

Stretch goals

  • Look at your test cases in Understanding-questions and see if there are any that you have not completed.
  • From the this list or from your own mind, add in at least one more new testcase.
  • There is alot of state management within our component in this project! See if you can separate the form and error validation code into their own hooks.

web-module-project-testing-web-apps's People

Contributors

clsca-86 avatar ladrillo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.