Skip to content

Releases: macbre/phantomas

phantomas v1.2

16 May 22:00
Compare
Choose a tag to compare

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

09 Apr 21:04
Compare
Choose a tag to compare

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

Internals

  • #269 - Use strict
  • #270 - Initial version of contributions policy
  • #271 - Modules: use strict

phantomas v1.0

29 Mar 16:32
Compare
Choose a tag to compare

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 vs offenders.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

  • #190 - Improve documentation
  • #257 - Render a visualization of phantomas commits history

L'Agent Secret - bug fixes

22 Jan 21:42
Compare
Choose a tag to compare

The world is not perfect nor is the code. This minor release brings two bug fixes (including a fix for regression caused by #186).

Bug fix

  • #221 - Handle "HTTP 303 See Other" redirects (reported by Sobia Ali)
  • #222 - Script does not provide failedAsserts in programmatic mode (reported by @ivn-cote)

L'Agent Secret

19 Jan 17:34
Compare
Choose a tag to compare

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

  • #186 - Run formatters in nodejs runner
  • #201 - Port remaining notices to offenders framework

Trivia

L'Agent Secret

Fantômas contre Scotland Yard - bug fix

01 Jan 10:32
Compare
Choose a tag to compare

Bug fix

  • #194 - Analysing CSS fails on Windows

Fantômas contre Scotland Yard

25 Dec 19:17
Compare
Choose a tag to compare

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 contre Scotland Yard

Fantômas se déchaîne - bug fix

12 Dec 22:40
Compare
Choose a tag to compare

Bug fix

  • #165 - --viewport arguments are reversed (thanks @indeox for reporting)

Fantômas se déchaîne

08 Dec 17:24
Compare
Choose a tag to compare

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 to responseEnd 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

  • #119 - Add phantomas.setMarkerMetric
  • #140 - Introduce "offenders" framework

Trivia

Fantômas se déchaîne

Fantômas contre Fantômas

10 Nov 18:59
Compare
Choose a tag to compare

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 and windowOnLoadTimeEnd 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 and windowOnLoadTime should be calculated relative to the first response being received
  • #122 - Requests to blocked domains are included in stats

Internals

  • #113 - Introduce formatters interface

Trivia

Fantômas contre Fantômas