phantomas v2.11.0
Headless Chromium-based modular web performance metrics collector. And why phantomas? Well, because :)
Requirements
- NodeJS 16+
Installation
Via npm
npm install phantomas
This will install a recent version of Chromium supported by
puppeteer
module.
Via Docker
You can use phantomas Docker image:
docker pull macbre/phantomas:latest
Or you can fetch from GitHub's Containers registry
docker pull ghcr.io/macbre/phantomas:latest
Support
You can get support for phantomas via xs:code.
Usage example
const phantomas = require('phantomas'),
promise = phantomas('http://example.com/');
promise.
then(results => {
console.log('Metrics', results.getMetrics());
console.log('Offenders', results.getAllOffenders());
}).
catch(res => {
console.error(res);
});
// events handling
promise.on('recv', response => {
console.log('Response: %s %s [%s]', response.method, response.url, response.contentType);
});
// including the custom one emitted by phantomas modules
promise.on('domQuery', (type, query) => {
console.log('DOM query by %s - "%s"', type, query);
});
Or run ./examples/index.js
.
Development version
To get the latest development version of phantomas (and install all required dependencies):
git clone git@github.com:macbre/phantomas.git
npm install
Running tests
First you need to start a local nginx container that will serve static assets used by integration tests suite. Then simply run npm t
:
./test/server-start.sh
npm t
All pull requests that are filed for this repository will have tests run via GitHub Actions.
Having problems?
Please refer to /Troubleshooting.md
Features
- modular approach - each metric is generated by a separate "module"
- phantomas "core" acts as an events emitter that each module can hook into
- in-depth metrics such as: number of events bound via jQuery, calls to
window.write
or complex and duplicated CSS selectors (via analyze-css) - JSON as an output format
- easy integration with other nodejs projects via CommonJS module (see API docs)
- metrics can be emitted from JavaScript code of the page phantomas is run against (thanks to helper functions available in window.__phantomas)
- device profiles allow phantomas to emulate mobile or tablet (by setting a proper user agent and viewport)
Contributors
All the contributors
Usage
phantomas comes as a CommonJS module (see API docs) that you can use in your nodejs projects.
You can also use it as a command line tool. Run phantomas -h
for more details.
Metrics
Please refer to
/docs/metrics.md
file for a full, up-to-date list of all available modules and metrics that phantomas emits.
For developers
Let's make Web a bit faster!
- Best Practices for Speeding Up Your Web Site (by Yahoo!)
- Web Performance Best Practices (by Google)
- Planet Performance - news and views from the web performance blogosphere
- Performance of 3rd Party Content (by Steve Souders)
- Profiling CSS for fun and profit. Optimization notes.
Slides
- Know Your Engines: How to Make Your JavaScript Fast (by David Mandelin from Mozilla)
- Velocity Conf 2013 Workshop: Avoiding Web Performance Regression (by Marcel Duran from Twitter)
Blogosphere
Introductions to phantomas and use cases:
- phantomas – PhantomJS based, modular web performance metrics generator (an article for Performance Calendar)
- How to Measure Frontend Performance With Grunt
- MaxCDN Blog - Behind The Scenes: tools.maxcdn.com
- Measuring frontend performance
- Performance Budgets with Phantomas and Jenkins
- phantomas introduced at npmawesome.com
- Grunt.js for the Enterprise - Vol.1: Frontend Performance with Phantomas (by David Amend)
- Automated Frontend Testing at DrupalCon Austin 2014 (+video)
- Phantomas: Fais-moi un strip ! (in French)
- Untangle the JavaScript spaghetti code with YellowLabTools
Videos
Utilities
Use grunt to automate daily dev tasks, including your's application web performance, via these great tools:
Stargazers over time
2 months ago
8 months ago
10 months ago
11 months ago
9 months ago
1 year ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
6 years ago
6 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago