10.2k GitHub stars and counting — Netflix/pollyjs is a JavaScript project TopGit is tracking across repositories on the platform. Record, Replay, and Stub HTTP Interactions.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Polly.JS is a standalone, framework-agnostic JavaScript library that enables recording, replaying, and stubbing of HTTP interactions. By tapping into multiple request APIs across both Node & the browser, Polly.JS is able to mock requests and responses with little to no configuration while giving you the ability to take full control of each request with a simple, powerful, and intuitive API.
Interested in contributing or just seeing Polly in action? Head over to CONTRIBUTING.md to learn how to spin up the project!
Why Polly?
Keeping fixtures and factories in parity with your APIs can be a time consuming process.
Polly alleviates this process by recording and maintaining actual server responses while also staying flexible.
Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
Use Polly's client-side server to modify or intercept requests and responses to simulate different application states (e.g. loading, error, etc.).
Features
🚀 Node & Browser Support
⚡️️ Simple, Powerful, & Intuitive API
💎 First Class Mocha & QUnit Test Helpers
🔥 Intercept, Pass-Through, and Attach Events
📼 Record to Disk or Local Storage
⏱ Slow Down or Speed Up Time
Getting Started
Check out the Quick Start documentation to get started.
Usage
Let's take a look at what an example test case would look like using Polly.
import { Polly } from '@pollyjs/core';
import XHRAdapter from '@pollyjs/adapter-xhr';
import FetchAdapter from '@pollyjs/adapter-fetch';
import RESTPersister from '@pollyjs/persister-rest';
/*
Register the adapters and persisters we want to use. This way all future
polly instances can access them by name.
*/
Polly.register(XHRAdapter);
Polly.register(FetchAdapter);
Polly.register(RESTPersister);
describe('Netflix Homepage', function () {
it('should be able to sign in', async function () {
/*
Create a new polly instance.
Connect Polly to both fetch and XHR browser APIs. By default, it will
record any requests that it hasn't yet seen while replaying ones it
has already recorded.
*/
const polly = new Polly('Sign In', {
adapters: ['xhr', 'fetch'],
persister: 'rest'
});
const { server } = polly;
/* Intercept all Google Analytic requests and respond with a 200 */
server
.get('/google-analytics/*path')
.intercept((req, res) => res.sendStatus(200));
/* Pass-through all GET requests to /coverage */
server.get('/coverage').passthrough();
/* start: pseudo test code */
await visit('/login');
await fillIn('email', '[email protected]');
await fillIn('password', '@pollyjs');
await submit();
/* end: pseudo test code */
expect(location.pathname).to.equal('/browse');
/*
Calling `stop` will persist requests as well as disconnect from any
connected browser APIs (e.g. fetch or XHR).
*/
await polly.stop();
});
});
The above test case would generate the following HAR
file which Polly will use to replay the sign-in response when the test is rerun:
The "Client Server" API of Polly is heavily influenced by the very popular mock server library pretender. Pretender supports XHR and Fetch stubbing and is a great lightweight alternative to Polly if your project does not require persisting capabilities or Node adapters.
Thank you to all contributors especially the maintainers: trek, stefanpenner, and xg-wang.
Contributors
License
Copyright (c) 2018 Netflix, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
How does Netflix/pollyjs compare to other Frontend projects?
Netflix/pollyjs is tracked by TopGit in the Frontend category, with 10.2k GitHub stars and written in JavaScript. Browse the Frontend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does Netflix/pollyjs have?
Netflix/pollyjs has 10.2k GitHub stars — refresh the page for the live number, or check github.com/Netflix/pollyjs. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is Netflix/pollyjs open source?
Yes — Netflix/pollyjs ships under the Apache-2.0 license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/Netflix/pollyjs.
What else is in the Frontend space?
Netflix/pollyjs is tracked by TopGit under the Frontend category, alongside 7 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is Netflix/pollyjs?
Netflix/pollyjs (Netflix/pollyjs) is a JavaScript project on GitHub. From the project's own README: Record, Replay, and Stub HTTP Interactions.
Where can I see Netflix/pollyjs in action?
The project maintains a homepage at https://netflix.github.io/pollyjs. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about Netflix/pollyjs?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/Netflix/pollyjs is the definitive source.
Read full README in the tab above.
Still deciding about pollyjs?
One click hands the question to an AI along with this page — see what it says about pollyjs.