[go: up one dir, main page]

0% found this document useful (0 votes)
59 views32 pages

9 Javascript Development Environment m9 Slides

This document discusses strategies for testing JavaScript applications including choosing a testing framework, assertion library, and helper libraries. It covers decisions around where to run tests like in the browser or headless, where to place test files, and when to run tests like on save. The document concludes by discussing continuous integration services like Travis CI, Appveyor, and Jenkins to automatically run tests on code changes.

Uploaded by

Daniel Fedeles
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views32 pages

9 Javascript Development Environment m9 Slides

This document discusses strategies for testing JavaScript applications including choosing a testing framework, assertion library, and helper libraries. It covers decisions around where to run tests like in the browser or headless, where to place test files, and when to run tests like on save. The document concludes by discussing continuous integration services like Travis CI, Appveyor, and Jenkins to automatically run tests on code changes.

Uploaded by

Daniel Fedeles
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Testing and Continuous Integration

Cory House

@housecor bitnative.com
Here’s the Plan JavaScript testing styles
6 key testing decisions
Configure testing and write test
Continuous integration
JavaScript Testing Styles

Style Focus
Unit Single function or module
Integration Interactions between modules
UI Automate interactions with UI
Unit Testing Decisions

1 2 3
Framework Assertion Library Helper Libraries

4 5 6
Where to run tests Where to place tests When to run tests
Decision #1:
Testing Framework
Testing Frameworks

Mocha Jasmine Tape

QUnit AVA Jest


It’s Like Choosing a Gym

The important part is showing up.


Right Answer Wrong Answer

Woah, decision fatigue!

I’ll just keep coding


and praying.

Any of these!
Decision #2:
Assertion Library
What’s An Assertion?

Declare what you expect

expect(2+2).to.equal(4)

assert(2+2).equals(4)
Assertion Libraries
Decision #3:
Helper Library
JSDOM

Simulate the browser’s DOM


Run DOM-related tests without a browser
Cheerio

jQuery for the server


Query virtual DOM using jQuery selectors
Decision #4:
Where to Run Tests
Where to Run Tests

Browser
- Karma, Testem

Headless Browser
- PhantomJS

In-memory DOM
- JSDOM
Decision #5:
Where do test files belong?
Where Do Test Files Belong?

Centralized Alongside
Less “noise” in src folder Easy imports
Deployment confusion Clear visibility
Inertia Convenient to open
No recreating folder structure
Easy file moves
Path to file under test is always ./filename 

// file.test.js // file.test.js
import file from '../../src/long/path' import file from './file'
Naming Test Files
Decision #6:
When should tests run?
Unit Tests Should Run When You Hit Save

Rapid feedback
Facilitates TDD
Automatic = Low friction
Increases test visibility
But Cory, my tests
are too slow!
- You, my viewer with slow tests
Unit Tests Integration Tests
Test a small unit Test multiple units
Often single function Often involves clicking and waiting
Fast Slow
Run upon save Often run on demand, or in QA
Here’s the Plan

1 2 3
Framework Assertion Library Helper Libraries
Mocha Chai JSDOM

4 5 6
Where to run tests Where to place tests When to run tests
Node Alongside Upon save
Demo

Configure automated testing


Continuous Integration
Weird.

Works on my
- Developer without a CI server
machine.
Why CI?

Forgot to commit new file


Forgot to update package.json
Commit doesn’t run cross-platform
Node version conflicts
Bad merge
Didn’t run tests
Catch mistakes quickly
What Does a CI Server Do?

Run Automated build


Run your tests
Check code coverage
Automate deployment
Continuous Integration

Travis Appveyor Jenkins


Demo

Set up Continuous Integration


Testing frameworks
- Mocha, Jasmine, AVA, Tape, Jest…

Assertion libraries
- Chai, Expect
Wrap Up
Helper libraries
- JSDOM, Cheerio

Where to run tests


- Browser, Headless, In memory

Where to place tests, and when to run


Continuous Integration
- Travis CI, Appveyor, Jenkins

Next up: HTTP and Mock APIs

You might also like