Releases: macbre/phantomas
phantomas v1.2
This release of phantomas brings:
- reporter options (#264) like
-R json:pretty
or-R csv:no-header:timestamp
- ability to load external modules (#292)
- ability to store HTML of the fully loaded page (#291)
In multiple runs mode JSON reporter now emits metrics statistics (#285).
phantomas now uses the latest version of debug npm module - messages emitted when DEBUG=phantomas*
env variable is set are now sent to stdout (instead of stderr).
You can find more details below.
Changelog
Improvements
- #264 - Options for --reporter (suggested by @AcousticRand)
- #285 - Provide metric statistics in JSON reporter like in Plain reporter
- #291 - Added pageSource module to save page source to file. (by @gomezd)
- #292 - Added --include-dirs=dir[,dirs] option to load external modules from dirs (by @gomezd)
Bug fixes
- #290 - fix: add timeToLastByte to onLoad and onContentLoad metrics (by @william-p)
- #297 - globalVariables: remove the iframe when the list of variables is generated
- #298 - timeToFirstByte: fix race condition
- #303 - IPC: wrap JSON parsing inside try / catch block
- #304 - Detect PhantomJS crash message and report it
Internals
- #286 - Implement missing metrics meta data
- #293 - Move cookies handling to a core module
- #306 - Use 'send' and 'recv' events instead 'onResource*' (by @william-p)
- #309 - requestMonitor: improvements
- #311 - Use 'entry.contentType' provided by #309 (by @william-p)
phantomas v1.1
This minor release of phantomas brings the support of HTTP authentication (#274). An issue with Content-Length being reported incorrectly (#277) is now fixed - page size related reports should be now far more reliable.
headersBiggerThanContent
metric has been added counting responses that have bigger headers than the content.
Internally, most of the code has been ported to JavaScript strict mode.
Changelog
New metrics
- #278 - headersBiggerThanContent: add a metric
Improvements
- #266 - Add DOMContentLoaded information to HAR (by @william-p)
- #274 - Support HTTP authentication
- #275 - Migrate staticAssets module to offenders
Bug fixes
- #277 - Content Length fixes
- #281 - har: fix title and address filling (by @william-p)
Internals
phantomas v1.0
After 20 months of development and 850+ commits phantomas has reached version 1.0.
Here's a short summary of what this release of phantomas brings:
- metrics can be stored in elasticsearch thanks to #256 by @iNem0o
- phantomas can generated HAR files thanks to #263 by @william-p
run-multiple
helper script was removed,phantomas
command now supports--runs
option (#172)- URL can be now provided without
--url
option: e.g.phantomas http://example.com
- CommonJS module now emits events when metrics are set and on certain page loading milestones
- metrics metadata is available via CommonJS module (#224)
Changelog
New metrics
- #232 - Report the use of Expires and Pragma caching headers
- #258 - Report global variables set to the value that casts to false
- #261 - Added the metric that shows how the main request progressed (e.g. followed redirects, etc) (by @vgangan)
Improvements
- #172 - Add --runs option to phantomas
- #204 - Implement progress event in phantomas module
- #224 - Provide metrics metadata in phantomas npm module
- #229 - Update dependency on analyze-css
- #237 - Color the output only when stdout.isTTY
- #240 - Emit events via npm module for certain page loading milestones
- #243 - Multi-Run: Please add std deviation and variance to metrics output
- #249 - Allow URL to passed as a "main" option
- #253 - Introduce --progress option
- #256 - Add support to ouput metrics in elasticsearch (by @iNem0o)
- #263 - HAR output (by @william-p)
- #267 - cacheHits: analyze Age header
Bug fixes
- #225 - Block domains, some work others don't (by @stefano-bortolotti)
- #227 - Confusing
metrics.globalVariables
vsoffenders.globalVariables
output (reported by @pdehaan) - #230 - Jserrors generate by injected Code ? (reported by @jedi4ever)
- #244 - Responses with MIME type "font/*" not detected as webfonts
- #247 - run-multiple.js cannot find phantomas.js (by @rupl)
- #248 - Pass envirnoment variables when running PhantomJS
Internals
L'Agent Secret - bug fixes
L'Agent Secret
This release introduces metrics reporting to statsd daemon. Implementing #10 took quite a while, but it's finally completed :)
phantomas can now be provided with --tablet
or --phone
option that will force viewport and user agent settings specific for a given device - #213.
All metrics were ported to the "offenders" framework. It should now be lot easier to understand what can be changed to improve given metric.
HTTP redirects are considered webperf bottlenecks. A new metric has been added to measure the time spent on redirects - #211.
More details can be found below.
Moving towards v1.0
The next release will be marked with v1.0 milestone. Some time will be spent on improving documentation and tests, providing examples, use cases and polishing the API.
Changelog
New metrics
- #211 - Measure the time spent on redirects
Improvements
- #10 - StatsD integration
- #145 - Force the delay of report generation
- #205 - Web font with application/octet-stream MIME type (suggested by @stefano-bortolotti)
- #213 - Force phone / tablet user agent and viewport
- #215 - TAP: add metric value when no assert is present
- #216 - Show requests that are responsible for timeout (suggested by @stefanjudis)
Bug fixes
- #192 - 'undefined' is not an object (evaluating 'window.performance.timing')
- #197 - --no-externals fails when initial redirect changes the domain (reported by @stefanjudis)
- #214 - Format YAMLish properly to make it work in Jenkins
- #217 - Fix timeout error for requests blocked by phantomjs (by @stefanjudis)
Internals
Trivia
Fantômas contre Scotland Yard - bug fix
Bug fix
- #194 - Analysing CSS fails on Windows
Fantômas contre Scotland Yard
This release introduces phantomas as CommonJS module that can be used directly from your nodejs project. Read more in API docs and in #152.
Other improvements and new features:
- running
phantomas -h
will now print out nice usage help - phantomas supports "native" PhantomJS options to be passed when running a report. Setting HTTP proxy (
--proxy
) or providing JAR file for storing cookies (--cookies-file
) is now possible. - CSS analyzing script is now developed as a separate project (it's of course still used when
--analyze-css
option is passed) - phantomas can now wait for a given element being present on the page (via CSS selector) - #144
- when being run in Travis CI environment phantomas will fold the output - #141
- thanks to #167 more metrics emit its specific information as offenders instead of notices
Files layout has changed a bit. phantomas.js
"binary" is now located in bin/
directory. Please update your symlinks if you're pointing directly to git checkout. Users of npm package should not notice this change at all.
Grunt plugin
And last, but not least. @stefanjudis created phantomas plugin for Grunt that gathers and visualizes historical webperf data - an example. Definitely worth checking!
Changelog
New metrics
- #111 - Report outdated CSS prefixes
- #166 - Add "X-cache: PASS" support in cacheHits module (by @kennydee)
Improvements
- #139 - Allow specifying Http Proxy (reported by @heynemann)
- #141 - Add Travis folds to output (@LaurentGoderre)
- #144 - Wait for a given CSS selector before generating a report
- #163 - Passing through Phantomjs options (as suggested by @plasticine)
- #167 - Port modules to offenders framework
- #178 - Use PhantomJS native cookie JAR support
- #184 - Adding --film-strip-dir param to configure film strip output dir (by @iNem0o)
Bug fixes
- #160 - phantomas.getDOMPath throws 'null' is not an object (evaluating 'node.nodeName')
Internals
- #152 - node.js module for spawning phantomas process and getting results
- #161 - Use optimist npm module for handling phantomas options
- #169 - Integrate analyze-css npm module
- #185 - Structure cleanup
- #187 - Create async queue that will trigger reports generation
Trivia
Fantômas se déchaîne - bug fix
Fantômas se déchaîne
This release changes the way PhantomJS is invoked. Instead of running it directly, phantomas.js
script uses node.js to spawn PhantomJS process. This allows locally installed PhantomJS to be used for running phantomas. Thanks @shama for the idea and @LaurentGoderre for implementing it.
Suggestions that phantomas generate should now be better structured, thanks to a feature stolen from inspired by YSlow. Read more about offenders in #140.
New features have been added, including:
phantomas.setMarkerMetric
allows you to measure times relative toresponseEnd
event (i.e. measured since the arrival of the last byte of HTML) - #119- by passing
--screenshot
option you can generate a screenshot of fully loaded page that phantomas is run for - #125 - latency (i.e. time to first byte) related metrics - #134
- thanks to @cphoover phantomas now supports persistent cookie jar - #149
And last, but not least. Phantomas has been described in an article for Performance Calendar 2013.
New metrics
- #134 - Add latency related metrics
Improvements
- #112 - Ability to run phantomas locally (by @shama)
- #125 - Make a screenshot when the page is fully loaded
- #126 - Document how to set up site performance monitoring using phantomas and tap-eater
- #128 - Allow asserts to be provided via command-line options
- #149 - Adding support for persistant cookies via cookie jar argument. (by @cphoover)
- #151 - Modified to use the local phantomjs instead of the global one. (by @LaurentGoderre)
Bug fixes
- #129 - phantomas should die with an error code when the page timeouts
- #131 - Target URL should be reported when a redirect is received
- #147 - package.json: specifying devDependencies as array is deprecated
- #156 - phantomas.getDOMPath throws 'undefined' is not a function (evaluating 'node.className.trim())
Internals
Trivia
Fantômas contre Fantômas
This release adds a completely new use case to phantomas - web performance monitoring.
Using a simple "asserts framework" you can specify maximum values for metrics (#108). After setting up asserts, you can render results of phantomas run using TAP format (#94 and #127). And then plug them into Continous Integration system of your choice (e.g. Jenkins) or use simple command-line program to report metrics not meeting the limits.
Support for JUnit format is planned for the upcoming releases - #93.
Two experimental feature were added:
- passing
--film-strip
option will create a serie of screenshots when page is being loaded (#89). onDOMReadyEnd
andwindowOnLoadTimeEnd
metrics were added (#88). They report when handling of onDOMReady and windowOnLoad events is completed.
Oh, one more thing. You can provide --disable-js
and see how faster your site loads with JavaScript disabled (#115). And what needs to be improved in your JS code ;)
New metrics
- #88 - Add onDOMReadyEnd and windowOnLoadTimeEnd metrics
Improvements
- #89 - Register film strip when page is loading
- #94 and #127 - Add TAP format with details using YAMLish format
- #107 - Reporting jsErrors backtrace for format json and plain
- #108 - Introduce "metrics asserts"
- #115 - Make it possible to disable JavaScript on the page
- #120 - Simple phantomas asserts runner
Bug fixes
- #105 - "False error" when running performance on a site without jQuery?
- #117 -
onDOMReadyTime
andwindowOnLoadTime
should be calculated relative to the first response being received - #122 - Requests to blocked domains are included in stats
Internals
- #113 - Introduce formatters interface