diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..85cb735
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,8 @@
+# EditorConfig.org
+root = true
+
+[*]
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 2
diff --git a/.gitignore b/.gitignore
index 1d6f27b..b76bbf2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,9 @@ lib-cov
*.pid
*.gz
+test/src/jquery.browser.js
+test/test-require.js
+
pids
logs
results
@@ -14,4 +17,4 @@ results
npm-debug.log
node_modules
-.DS_STORE
\ No newline at end of file
+.DS_STORE
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..0a7a84e
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,6 @@
+sudo: false
+language: node_js
+node_js:
+ - "0.10"
+before_install: npm install -g grunt-cli; npm install -g casperjs
+install: npm install
\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
index c2c4f4e..4d3c2fb 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,47 +1,62 @@
-module.exports = function(grunt) {
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
- jshint: {
- files: ['gruntfile.js', 'jquery.browser.js'],
+module.exports = function(grunt) {
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ browserify: {
+ 'test/test-require.js': ['test/src/require/test.js'],
+ options: {
+ banner: '/*\n\n ****** Testing Require file ****** \n\n*/'
+ }
+ },
+ jshint: {
+ files: ['Gruntfile.js', 'dist/jquery.browser.js', 'test/test.js'],
- options: {
- globals: {
- jQuery: true,
- console: true,
- module: true
- }
- }
- },
- uglify: {
- options: {
- banner: '/*!\n * jQuery Browser Plugin <%= pkg.version %>\n * https://github.com/gabceb/jquery-browser-plugin\n *\n * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * http://jquery.org/license\n *\n * Modifications Copyright <%= grunt.template.today("yyyy") %> Gabriel Cebrian\n * https://github.com/gabceb\n *\n * Released under the MIT license\n *\n * Date: <%= grunt.template.today("dd-mm-yyyy")%>\n */'
- },
- dist: {
- files: {
- 'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js'
- }
- }
- },
- copy: {
- main:{
- src: "dist/<%= pkg.name %>.js",
- dest: "test/src/<%= pkg.name %>.js"
- }
- },
- exec: {
- test: {
- command: "casperjs test test/test.js",
- stdout: true,
- stderr: true
- }
- }
- });
+ options: {
+ globals: {
+ jQuery: true,
+ console: true,
+ module: true
+ }
+ }
+ },
+ uglify: {
+ options: {
+ banner: '/*!\n * jQuery Browser Plugin <%= pkg.version %>\n * https://github.com/gabceb/jquery-browser-plugin\n *\n * Original jquery-browser code Copyright 2005, 2015 jQuery Foundation, Inc. and other contributors\n * http://jquery.org/license\n *\n * Modifications Copyright <%= grunt.template.today("yyyy") %> Gabriel Cebrian\n * https://github.com/gabceb\n *\n * Released under the MIT license\n *\n * Date: <%= grunt.template.today("dd-mm-yyyy")%>\n */'
+ },
+ dist: {
+ files: {
+ 'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js'
+ }
+ }
+ },
+ copy: {
+ main: {
+ src: "dist/<%= pkg.name %>.js",
+ dest: "test/src/<%= pkg.name %>.js"
+ }
+ },
+ exec: {
+ 'test-jquery': {
+ command: "casperjs test test/test.js",
+ stdout: true,
+ stderr: true
+ },
+ 'test-require': {
+ command: "./node_modules/.bin/mocha test/test-require.js",
+ stdout: true,
+ stderr: true
+ }
+ }
+ });
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-copy');
- grunt.loadNpmTasks('grunt-exec');
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-copy');
+ grunt.loadNpmTasks('grunt-exec');
+ grunt.loadNpmTasks('grunt-browserify');
- grunt.registerTask('default', ['jshint', 'uglify', 'copy']);
- grunt.registerTask('test', ['exec']);
-};
\ No newline at end of file
+ grunt.registerTask('default', ['jshint', 'uglify', 'copy']);
+
+ grunt.registerTask('test-jquery', ['default', 'exec:test-jquery']);
+ grunt.registerTask('test-require', ['default', 'browserify', 'exec:test-require']);
+ grunt.registerTask('test', ['test-jquery', 'test-require']);
+};
diff --git a/MIT-LICENSE.txt b/MIT-LICENSE.txt
index d04f9a7..c6ae678 100644
--- a/MIT-LICENSE.txt
+++ b/MIT-LICENSE.txt
@@ -1,5 +1,5 @@
-Copyright 2013 jQuery Foundation and other contributors, http://jquery.com/
-Modifications Copyright 2013 Gabriel Cebrian, https://www.github.com/gabceb
+Copyright 2015 jQuery Foundation and other contributors, http://jquery.com/
+Modifications Copyright 2015 Gabriel Cebrian, https://www.github.com/gabceb
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/README.md b/README.md
index adb36de..11c9f8e 100644
--- a/README.md
+++ b/README.md
@@ -1,41 +1,80 @@
-A jQuery plugin for browser detection. jQuery removed support for browser detection on 1.9.1 so it was abstracted into a jQuery plugin
+[](https://nodei.co/npm/jquery.browser/)
+
+[](https://travis-ci.org/gabceb/jquery-browser-plugin)
+
+A jQuery plugin for browser detection. jQuery v1.9.1 dropped support for browser detection, and this project aims to keep the detection up-to-date.
## Installation
Include script *after* the jQuery library:
+```html
+
+```
-
+Alternatively, you can use the plugin without jQuery by using the global object `jQBrowser` instead of `$.browser`.
## Usage
-Returns true if the current useragent is some version of Microsoft's Internet Explorer. Supports all IE versions including IE11
+Returns true if the current useragent is some version of Microsoft's Internet Explorer. Supports all IE versions including IE 11.
$.browser.msie;
-Returns true if the current useragent is some version of a Webkit browser (Safari, Chrome and Opera 15+).
+Returns true if the current useragent is some version of a WebKit browser (Safari, Chrome and Opera 15+)
$.browser.webkit;
-Returns true if the current useragent is some version of Firefox.
+Returns true if the current useragent is some version of Firefox
$.browser.mozilla;
-Reading the browser verion
-
+Reading the browser version
+
$.browser.version
+You can also examine arbitrary useragents
+
+ jQBrowser.uaMatch();
+
## Things not included in the original jQuery $.browser implementation
-- Detect Windows, Mac, Linux, iPad, iPhone, Android and Windows Phone useragents
+- Detect specifically Windows, Mac, Linux, iPad, iPhone, iPod, Android, Kindle, BlackBerry, Chrome OS, and Windows Phone useragents
```javascript
+ $.browser.android
+ $.browser.blackberry
+ $.browser.cros
$.browser.ipad
$.browser.iphone
- $.browser["windows phone"]
- $.browser.android
- $.browser.win
- $.browser.mac
+ $.browser.ipod
+ $.browser.kindle
$.browser.linux
+ $.browser.mac
+ $.browser.msedge
+ $.browser.playbook
+ $.browser.silk
+ $.browser.win
+ $.browser["windows phone"]
+```
+
+Alternatively, you can detect for generic classifications such as desktop or mobile
+
+```javascript
+ $.browser.desktop
+ $.browser.mobile
+```
+
+```javascript
+ // User Agent for Firefox on Windows
+ User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0
+
+ $.browser.desktop // Returns true as a boolean
+```
+
+```javascript
+ // User Agent for Safari on iPhone
+ User-Agent: Mozilla/5.0(iPhone; CPU iPhone OS 7_0_3 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B508 Safari/9537.53
+
+ $.browser.mobile // Returns true as a boolean
```
- Detect the browser's major version
@@ -47,8 +86,9 @@ Reading the browser verion
$.browser.versionNumber // Returns 32 as a number
```
-- Support for new useragent on IE11
-- Support for webkit based Opera browsers
+- Support for new useragent on IE 11
+- Support for Microsoft Edge
+- Support for WebKit based Opera browsers
- Added testing using PhantomJS and different browser user agents
## Testing
@@ -64,7 +104,7 @@ Run `npm install` to install all dependencies including grunt and all tasks
Once Casperjs and the grunt-cli npm package is installed you can execute all the tests by using:
- grunt test
+ npm test
## Development
@@ -75,6 +115,3 @@ Once Casperjs and the grunt-cli npm package is installed you can execute all the
- [Examples and original implementation](http://api.jquery.com/jQuery.browser/)
- [Original Gist used for the plugin](https://gist.github.com/adeelejaz/4714079)
-
-[](https://bitdeli.com/free "Bitdeli Badge")
-
diff --git a/bower.json b/bower.json
index 1e83698..6955a43 100644
--- a/bower.json
+++ b/bower.json
@@ -1,13 +1,13 @@
{
"name": "jquery.browser",
- "version": "0.0.5",
+ "version": "0.1.0",
"homepage": "https://github.com/gabceb/jquery-browser-plugin",
"authors": ["Gabriel Cebrian ", "jQuery Team "],
"description": "A jQuery plugin for browser detection.",
- "main": "jquery.browser.js",
+ "main": "dist/jquery.browser.js",
"keywords": ["browser", "jquery", "desktop", "detect"],
"license": "MIT",
"dependencies": {
"jquery": ">=1.5"
}
-}
\ No newline at end of file
+}
diff --git a/browser.jquery.json b/browser.jquery.json
index 7ef36b5..79868a6 100644
--- a/browser.jquery.json
+++ b/browser.jquery.json
@@ -9,7 +9,7 @@
"html5",
"support"
],
- "version": "0.0.5",
+ "version": "0.1.0",
"author": {
"name": "Gabriel Cebrian. Initial implementation by the jQuery Team",
"url": "https://github.com/gabceb/jquery-browser-plugin/wiki/Authors"
diff --git a/dist/jquery.browser.js b/dist/jquery.browser.js
index a1e648a..223eca6 100644
--- a/dist/jquery.browser.js
+++ b/dist/jquery.browser.js
@@ -1,93 +1,193 @@
/*!
- * jQuery Browser Plugin v0.0.5
+ * jQuery Browser Plugin 0.1.0
* https://github.com/gabceb/jquery-browser-plugin
*
- * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Original jquery-browser code Copyright 2005, 2015 jQuery Foundation, Inc. and other contributors
* http://jquery.org/license
*
- * Modifications Copyright 2013 Gabriel Cebrian
+ * Modifications Copyright 2015 Gabriel Cebrian
* https://github.com/gabceb
*
* Released under the MIT license
*
- * Date: 2013-07-29T17:23:27-07:00
+ * Date: 05-07-2015
*/
-
-(function( jQuery, window, undefined ) {
-"use strict";
-
-var matched, browser;
-
-jQuery.uaMatch = function( ua ) {
- ua = ua.toLowerCase();
-
- var match = /(opr)[\/]([\w.]+)/.exec( ua ) ||
- /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
-
- var platform_match = /(ipad)/.exec( ua ) ||
- /(iphone)/.exec( ua ) ||
- /(android)/.exec( ua ) ||
- /(windows phone)/.exec(ua) ||
- /(win)/.exec( ua ) ||
- /(mac)/.exec( ua ) ||
- /(linux)/.exec( ua ) ||
- [];
-
- return {
- browser: match[ 3 ] || match[ 1 ] || "",
- version: match[ 2 ] || "0",
- platform: platform_match[0] || ""
- };
-};
-
-matched = jQuery.uaMatch( window.navigator.userAgent );
-browser = {};
-
-if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- browser.versionNumber = parseFloat(matched.version, 10);
-}
-
-if ( matched.platform ) {
- browser[ matched.platform ] = true;
-}
-
-// Chrome, Opera 15+ and Safari are webkit based browsers
-if ( browser.chrome || browser.opr || browser.safari ) {
- browser.webkit = true;
-}
-
-// IE11 has a new token so we will assign it msie to avoid breaking changes
-if ( browser.rv )
-{
- var ie = 'msie';
-
- matched.browser = ie;
- browser[ie] = true;
-}
-
-// Opera 15+ are identified as opr
-if ( browser.opr )
-{
- var opera = 'opera';
-
- matched.browser = opera;
- browser[opera] = true;
-}
-
-// Assign the name and platform variable
-browser.name = matched.browser;
-browser.platform = matched.platform;
-
-
-jQuery.browser = browser;
-
-})( jQuery, window );
\ No newline at end of file
+/*global window: false */
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(['jquery'], function ($) {
+ return factory($);
+ });
+ } else if (typeof module === 'object' && typeof module.exports === 'object') {
+ // Node-like environment
+ module.exports = factory(require('jquery'));
+ } else {
+ // Browser globals
+ factory(window.jQuery);
+ }
+}(function(jQuery) {
+ "use strict";
+
+ function uaMatch( ua ) {
+ // If an UA is not provided, default to the current browser UA.
+ if ( ua === undefined ) {
+ ua = window.navigator.userAgent;
+ }
+ ua = ua.toLowerCase();
+
+ var match = /(edge)\/([\w.]+)/.exec( ua ) ||
+ /(opr)[\/]([\w.]+)/.exec( ua ) ||
+ /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
+ /(iemobile)[\/]([\w.]+)/.exec( ua ) ||
+ /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) ||
+ /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) ||
+ /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
+ [];
+
+ var platform_match = /(ipad)/.exec( ua ) ||
+ /(ipod)/.exec( ua ) ||
+ /(windows phone)/.exec( ua ) ||
+ /(iphone)/.exec( ua ) ||
+ /(kindle)/.exec( ua ) ||
+ /(silk)/.exec( ua ) ||
+ /(android)/.exec( ua ) ||
+ /(win)/.exec( ua ) ||
+ /(mac)/.exec( ua ) ||
+ /(linux)/.exec( ua ) ||
+ /(cros)/.exec( ua ) ||
+ /(playbook)/.exec( ua ) ||
+ /(bb)/.exec( ua ) ||
+ /(blackberry)/.exec( ua ) ||
+ [];
+
+ var browser = {},
+ matched = {
+ browser: match[ 5 ] || match[ 3 ] || match[ 1 ] || "",
+ version: match[ 2 ] || match[ 4 ] || "0",
+ versionNumber: match[ 4 ] || match[ 2 ] || "0",
+ platform: platform_match[ 0 ] || ""
+ };
+
+ if ( matched.browser ) {
+ browser[ matched.browser ] = true;
+ browser.version = matched.version;
+ browser.versionNumber = parseInt(matched.versionNumber, 10);
+ }
+
+ if ( matched.platform ) {
+ browser[ matched.platform ] = true;
+ }
+
+ // These are all considered mobile platforms, meaning they run a mobile browser
+ if ( browser.android || browser.bb || browser.blackberry || browser.ipad || browser.iphone ||
+ browser.ipod || browser.kindle || browser.playbook || browser.silk || browser[ "windows phone" ]) {
+ browser.mobile = true;
+ }
+
+ // These are all considered desktop platforms, meaning they run a desktop browser
+ if ( browser.cros || browser.mac || browser.linux || browser.win ) {
+ browser.desktop = true;
+ }
+
+ // Chrome, Opera 15+ and Safari are webkit based browsers
+ if ( browser.chrome || browser.opr || browser.safari ) {
+ browser.webkit = true;
+ }
+
+ // IE11 has a new token so we will assign it msie to avoid breaking changes
+ if ( browser.rv || browser.iemobile) {
+ var ie = "msie";
+
+ matched.browser = ie;
+ browser[ie] = true;
+ }
+
+ // Edge is officially known as Microsoft Edge, so rewrite the key to match
+ if ( browser.edge ) {
+ delete browser.edge;
+ var msedge = "msedge";
+
+ matched.browser = msedge;
+ browser[msedge] = true;
+ }
+
+ // Blackberry browsers are marked as Safari on BlackBerry
+ if ( browser.safari && browser.blackberry ) {
+ var blackberry = "blackberry";
+
+ matched.browser = blackberry;
+ browser[blackberry] = true;
+ }
+
+ // Playbook browsers are marked as Safari on Playbook
+ if ( browser.safari && browser.playbook ) {
+ var playbook = "playbook";
+
+ matched.browser = playbook;
+ browser[playbook] = true;
+ }
+
+ // BB10 is a newer OS version of BlackBerry
+ if ( browser.bb ) {
+ var bb = "blackberry";
+
+ matched.browser = bb;
+ browser[bb] = true;
+ }
+
+ // Opera 15+ are identified as opr
+ if ( browser.opr ) {
+ var opera = "opera";
+
+ matched.browser = opera;
+ browser[opera] = true;
+ }
+
+ // Stock Android browsers are marked as Safari on Android.
+ if ( browser.safari && browser.android ) {
+ var android = "android";
+
+ matched.browser = android;
+ browser[android] = true;
+ }
+
+ // Kindle browsers are marked as Safari on Kindle
+ if ( browser.safari && browser.kindle ) {
+ var kindle = "kindle";
+
+ matched.browser = kindle;
+ browser[kindle] = true;
+ }
+
+ // Kindle Silk browsers are marked as Safari on Kindle
+ if ( browser.safari && browser.silk ) {
+ var silk = "silk";
+
+ matched.browser = silk;
+ browser[silk] = true;
+ }
+
+ // Assign the name and platform variable
+ browser.name = matched.browser;
+ browser.platform = matched.platform;
+ return browser;
+ }
+
+ // Run the matching process, also assign the function to the returned object
+ // for manual, jQuery-free use if desired
+ window.jQBrowser = uaMatch( window.navigator.userAgent );
+ window.jQBrowser.uaMatch = uaMatch;
+
+ // Only assign to jQuery.browser if jQuery is loaded
+ if ( jQuery ) {
+ jQuery.browser = window.jQBrowser;
+ }
+
+ return window.jQBrowser;
+}));
diff --git a/dist/jquery.browser.js.coffee b/dist/jquery.browser.js.coffee
deleted file mode 100644
index cf8177a..0000000
--- a/dist/jquery.browser.js.coffee
+++ /dev/null
@@ -1,63 +0,0 @@
-#!
-# jQuery Browser Plugin v0.0.5
-# https://github.com/gabceb/jquery-browser-plugin
-#
-# Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
-# http://jquery.org/license
-#
-# Modifications Copyright 2013 Gabriel Cebrian
-# https://github.com/gabceb
-#
-# Released under the MIT license
-#
-# Date: 2013-07-29T17:23:27-07:00
-#
-
-((jQuery, window, undefined_) ->
- "use strict"
- matched = undefined
- browser = undefined
-
- jQuery.uaMatch = (ua) ->
- ua = ua.toLowerCase()
- match = /(opr)[\/]([\w.]+)/.exec(ua) or /(chrome)[ \/]([\w.]+)/.exec(ua) or /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) or /(webkit)[ \/]([\w.]+)/.exec(ua) or /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) or /(msie) ([\w.]+)/.exec(ua) or ua.indexOf("trident") >= 0 and /(rv)(?::| )([\w.]+)/.exec(ua) or ua.indexOf("compatible") < 0 and /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) or []
- platform_match = /(ipad)/.exec(ua) or /(iphone)/.exec(ua) or /(android)/.exec(ua) or /(windows phone)/.exec(ua) or /(win)/.exec(ua) or /(mac)/.exec(ua) or /(linux)/.exec(ua) or []
- browser: match[3] or match[1] or ""
- version: match[2] or "0"
- platform: platform_match[0] or ""
-
- matched = jQuery.uaMatch(window.navigator.userAgent)
- browser = {}
-
- if matched.browser
- browser[matched.browser] = true
- browser.version = matched.version
- browser.versionNumber = parseFloat(matched.version, 10)
-
- if matched.platform
- browser[matched.platform] = true
-
- # Chrome, Opera 15+ and Safari are webkit based browsers
- if browser.chrome or browser.opr or browser.safari
- browser.webkit = true
-
- # IE11 has a new token so we will assign it msie to avoid breaking changes
- if browser.rv
- ie = "msie"
-
- matched.browser = ie
- browser[ie] = true
-
- # Opera 15+ are identified as opr
- if browser.opr
- opera = "opera"
-
- matched.browser = opera
- browser[opera] = true
-
- # Assign the name and platform variable
- browser.name = matched.browser
- browser.platform = matched.platform
-
-jQuery.browser = browser
-) jQuery, window
\ No newline at end of file
diff --git a/dist/jquery.browser.min.js b/dist/jquery.browser.min.js
index 2aa2d21..491da7c 100644
--- a/dist/jquery.browser.min.js
+++ b/dist/jquery.browser.min.js
@@ -1,14 +1,14 @@
/*!
- * jQuery Browser Plugin 0.0.5
+ * jQuery Browser Plugin 0.1.0
* https://github.com/gabceb/jquery-browser-plugin
*
- * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Original jquery-browser code Copyright 2005, 2015 jQuery Foundation, Inc. and other contributors
* http://jquery.org/license
*
- * Modifications Copyright 2013 Gabriel Cebrian
+ * Modifications Copyright 2015 Gabriel Cebrian
* https://github.com/gabceb
*
* Released under the MIT license
*
- * Date: 14-11-2013
- */!function(a,b){"use strict";var c,d;if(a.uaMatch=function(a){a=a.toLowerCase();var b=/(opr)[\/]([\w.]+)/.exec(a)||/(chrome)[ \/]([\w.]+)/.exec(a)||/(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[],c=/(ipad)/.exec(a)||/(iphone)/.exec(a)||/(android)/.exec(a)||/(windows phone)/.exec(a)||/(win)/.exec(a)||/(mac)/.exec(a)||/(linux)/.exec(a)||[];return{browser:b[3]||b[1]||"",version:b[2]||"0",platform:c[0]||""}},c=a.uaMatch(b.navigator.userAgent),d={},c.browser&&(d[c.browser]=!0,d.version=c.version,d.versionNumber=parseFloat(c.version,10)),c.platform&&(d[c.platform]=!0),(d.chrome||d.opr||d.safari)&&(d.webkit=!0),d.rv){var e="msie";c.browser=e,d[e]=!0}if(d.opr){var f="opera";c.browser=f,d[f]=!0}d.name=c.browser,d.platform=c.platform,a.browser=d}(jQuery,window);
\ No newline at end of file
+ * Date: 23-11-2015
+ */!function(a){"function"==typeof define&&define.amd?define(["jquery"],function(b){return a(b)}):"object"==typeof module&&"object"==typeof module.exports?module.exports=a(require("jquery")):a(window.jQuery)}(function(a){"use strict";function b(a){void 0===a&&(a=window.navigator.userAgent),a=a.toLowerCase();var b=/(edge)\/([\w.]+)/.exec(a)||/(opr)[\/]([\w.]+)/.exec(a)||/(chrome)[ \/]([\w.]+)/.exec(a)||/(iemobile)[\/]([\w.]+)/.exec(a)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[],c=/(ipad)/.exec(a)||/(ipod)/.exec(a)||/(windows phone)/.exec(a)||/(iphone)/.exec(a)||/(kindle)/.exec(a)||/(silk)/.exec(a)||/(android)/.exec(a)||/(win)/.exec(a)||/(mac)/.exec(a)||/(linux)/.exec(a)||/(cros)/.exec(a)||/(playbook)/.exec(a)||/(bb)/.exec(a)||/(blackberry)/.exec(a)||[],d={},e={browser:b[5]||b[3]||b[1]||"",version:b[2]||b[4]||"0",versionNumber:b[4]||b[2]||"0",platform:c[0]||""};if(e.browser&&(d[e.browser]=!0,d.version=e.version,d.versionNumber=parseInt(e.versionNumber,10)),e.platform&&(d[e.platform]=!0),(d.android||d.bb||d.blackberry||d.ipad||d.iphone||d.ipod||d.kindle||d.playbook||d.silk||d["windows phone"])&&(d.mobile=!0),(d.cros||d.mac||d.linux||d.win)&&(d.desktop=!0),(d.chrome||d.opr||d.safari)&&(d.webkit=!0),d.rv||d.iemobile){var f="msie";e.browser=f,d[f]=!0}if(d.edge){delete d.edge;var g="msedge";e.browser=g,d[g]=!0}if(d.safari&&d.blackberry){var h="blackberry";e.browser=h,d[h]=!0}if(d.safari&&d.playbook){var i="playbook";e.browser=i,d[i]=!0}if(d.bb){var j="blackberry";e.browser=j,d[j]=!0}if(d.opr){var k="opera";e.browser=k,d[k]=!0}if(d.safari&&d.android){var l="android";e.browser=l,d[l]=!0}if(d.safari&&d.kindle){var m="kindle";e.browser=m,d[m]=!0}if(d.safari&&d.silk){var n="silk";e.browser=n,d[n]=!0}return d.name=e.browser,d.platform=e.platform,d}return window.jQBrowser=b(window.navigator.userAgent),window.jQBrowser.uaMatch=b,a&&(a.browser=window.jQBrowser),window.jQBrowser});
\ No newline at end of file
diff --git a/package.json b/package.json
index 9fc9d8c..421f8d5 100644
--- a/package.json
+++ b/package.json
@@ -1,20 +1,27 @@
{
"name": "jquery.browser",
- "version": "0.0.5",
+ "version": "0.1.0",
"authors": [
"Gabriel Cebrian ",
"jQuery Team "
],
+ "scripts": {
+ "test": "grunt test"
+ },
"description": "A jQuery plugin for browser detection.",
+ "main": "dist/jquery.browser.js",
"repository": "git@github.com:gabceb/jquery-browser-plugin.git",
"devDependencies": {
- "webserver": "*",
- "utils": "*",
+ "chai": "^1.10.0",
"grunt": "~0.4.0",
+ "grunt-browserify": "^3.2.1",
+ "grunt-contrib-copy": "~0.4.1",
"grunt-contrib-jshint": "~0.1.1",
"grunt-contrib-uglify": "~0.2.7",
- "grunt-contrib-copy": "~0.4.1",
- "grunt-exec": "~0.4.2"
+ "grunt-exec": "~0.4.2",
+ "jquery": "^2.1.3",
+ "mocha": "^2.1.0",
+ "webserver": "^1.1.2"
},
"license": "MIT",
"engines": {
diff --git a/test/src/jquery.browser.js b/test/src/jquery.browser.js
deleted file mode 100644
index a1e648a..0000000
--- a/test/src/jquery.browser.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/*!
- * jQuery Browser Plugin v0.0.5
- * https://github.com/gabceb/jquery-browser-plugin
- *
- * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
- * http://jquery.org/license
- *
- * Modifications Copyright 2013 Gabriel Cebrian
- * https://github.com/gabceb
- *
- * Released under the MIT license
- *
- * Date: 2013-07-29T17:23:27-07:00
- */
-
-(function( jQuery, window, undefined ) {
-"use strict";
-
-var matched, browser;
-
-jQuery.uaMatch = function( ua ) {
- ua = ua.toLowerCase();
-
- var match = /(opr)[\/]([\w.]+)/.exec( ua ) ||
- /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
-
- var platform_match = /(ipad)/.exec( ua ) ||
- /(iphone)/.exec( ua ) ||
- /(android)/.exec( ua ) ||
- /(windows phone)/.exec(ua) ||
- /(win)/.exec( ua ) ||
- /(mac)/.exec( ua ) ||
- /(linux)/.exec( ua ) ||
- [];
-
- return {
- browser: match[ 3 ] || match[ 1 ] || "",
- version: match[ 2 ] || "0",
- platform: platform_match[0] || ""
- };
-};
-
-matched = jQuery.uaMatch( window.navigator.userAgent );
-browser = {};
-
-if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- browser.versionNumber = parseFloat(matched.version, 10);
-}
-
-if ( matched.platform ) {
- browser[ matched.platform ] = true;
-}
-
-// Chrome, Opera 15+ and Safari are webkit based browsers
-if ( browser.chrome || browser.opr || browser.safari ) {
- browser.webkit = true;
-}
-
-// IE11 has a new token so we will assign it msie to avoid breaking changes
-if ( browser.rv )
-{
- var ie = 'msie';
-
- matched.browser = ie;
- browser[ie] = true;
-}
-
-// Opera 15+ are identified as opr
-if ( browser.opr )
-{
- var opera = 'opera';
-
- matched.browser = opera;
- browser[opera] = true;
-}
-
-// Assign the name and platform variable
-browser.name = matched.browser;
-browser.platform = matched.platform;
-
-
-jQuery.browser = browser;
-
-})( jQuery, window );
\ No newline at end of file
diff --git a/test/src/require/test.js b/test/src/require/test.js
new file mode 100644
index 0000000..596b114
--- /dev/null
+++ b/test/src/require/test.js
@@ -0,0 +1,21 @@
+// Emulate the browser
+global.window = {
+ navigator: {
+ userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.45 Safari/537.36'
+ }
+};
+
+var browser = require('../jquery.browser.js');
+
+var should = require('chai').should();
+
+describe('require jQuery browser', function() {
+ it('should have the correct properties for a Chrome browser on a Mac', function(done) {
+ browser.webkit.should.be.ok;
+ browser.mac.should.be.ok;
+ browser.desktop.should.be.ok;
+
+ done();
+ });
+})
+
diff --git a/test/test.js b/test/test.js
index 7333ae3..35db474 100644
--- a/test/test.js
+++ b/test/test.js
@@ -1,481 +1,962 @@
-test_url = "http://localhost:8008"
+/*global casper, require, $ */
-var casper = require('casper').create({
- verbose: true
-});
+var test_url = "http://localhost:8008";
-require('casperserver.js').create(casper);
+require("casperserver.js").create(casper);
casper.server.start();
-casper.on('exit', function(status){
- casper.server.end();
-});
-
-ua = {
- chrome : {
- windows: "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36",
- mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36",
- android: "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Mobile Safari/537.36",
- linux: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36",
- version : "32.0.1664.3",
- versionNumber : 32,
- name : "chrome"
- },
- safari : {
- mac: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71",
- ipad: "Mozilla/5.0(iPad; U; CPU iPhone OS 7_0_3 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B508 Safari/9537.53",
- iphone: "Mozilla/5.0(iPhone; CPU iPhone OS 7_0_3 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B508 Safari/9537.53",
- version: "7.0",
- versionNumber: 7,
- name : "safari"
- },
- firefox : {
- windows: "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0",
- mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0",
- linux: "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0",
- version: "25.0",
- versionNumber: 25,
- name : "mozilla"
- },
- ie : {
- windows : {
- v_9: "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)",
- v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)",
- v_11: 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko'
- },
- win_phone : {
- v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 1020)"
- },
- name : "msie"
- },
- opera : {
+casper.on("exit", function(status){
+ casper.server.end();
+});
+
+var ua = {
+ chrome: {
+ windows: "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36",
+ mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36",
+ android: "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Mobile Safari/537.36",
+ linux: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36",
+ cros: "Mozilla/5.0 (X11; CrOS i686 14.811.2011) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.834.0 Safari/535.1",
+ version: "32.0.1664.3",
+ versionNumber: 32,
+ chromeOsVersion: "14.0.834.0",
+ chromeOsVersionNumber: 14,
+ name: "chrome"
+ },
+ safari: {
+ mac: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71",
+ ipad: "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
+ iphone: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
+ ipod: "Mozilla/5.0 (iPod; CPU iPod OS 7_0 like Mac OS X) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
+ version: "537.71",
+ versionNumber: 7,
+ name: "safari"
+ },
+ firefox: {
+ windows: "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0",
+ mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0",
+ linux: "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0",
+ version: "25.0",
+ versionNumber: 25,
+ name: "mozilla"
+ },
+ ie: {
+ windows: {
+ v_9: "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)",
+ v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)",
+ v_11: "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
+ },
+ win_phone: {
+ v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 1020)",
+ v_11: "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537"
+ },
+ name: "msie"
+ },
+ msedge: {
+ windows: {
+ v_12: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.0",
+ v_13: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586"
+ },
+ win_phone: {
+ v_13: "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/13.10586"
+ },
+ name: "msedge"
+ },
+ opera: {
v_15: {
- mac : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18",
+ mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18",
windows: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18",
version: "15.0.1147.18",
versionNumber: 15
},
v_10: {
- mac : "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00",
+ mac: "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00",
windows: "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.00",
version: "10.00",
versionNumber: 10
},
- name : "opera"
+ v_12: {
+ mac: "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/12.11",
+ windows: "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/12.11",
+ version: "12.11",
+ versionNumber: 12
+ },
+ name: "opera"
+ },
+ android: {
+ v_4_4: {
+ android: "Mozilla/5.0 (Linux; Android 4.4.1; Nexus 5 Build/KOT49E) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36",
+ version: "537.36",
+ versionNumber: 4
+ },
+ name: "android"
+ },
+ kindle : {
+ v_4: {
+ kindle : "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
+ version: "533.1",
+ versionNumber: 4
+ },
+ name: "kindle"
+ },
+ silk : {
+ v_5: {
+ silk : "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true",
+ version: "533.16",
+ versionNumber: 5
+ },
+ name: "silk"
+ },
+ blackberry : {
+ v_7: {
+ blackberry : "Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+",
+ version: "534.11",
+ versionNumber: 7
+ },
+ name: "blackberry"
+ },
+ bb : {
+ v_10: {
+ bb : "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1 (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1",
+ version: "537.1",
+ versionNumber: 10
+ },
+ name: "bb"
+ },
+ playbook : {
+ v_7: {
+ playbook : "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+",
+ version: "536.2",
+ versionNumber: 7
+ },
+ name: "playbook"
}
-}
+};
-casper.test.begin("when using Chrome on Windows", 6, function(test) {
+casper.test.begin("when using Chrome on Windows", 7, function(test) {
casper.userAgent(ua.chrome.windows);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.chrome, "Browser should be Chrome");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.chrome, "Browser should be Chrome");
test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
- test.assert(browser.webkit, "Browser should be webkit based");
- test.assertEquals(browser.version, ua.chrome.version, "String version should be " + ua.chrome.version);
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.chrome.version, "String version should be " + ua.chrome.version);
test.assertEquals(browser.versionNumber, ua.chrome.versionNumber, "Number version should be " + ua.chrome.versionNumber);
- test.assert(browser.win, "Platform should be Windows");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using Chrome on Mac", 6, function(test) {
+casper.test.begin("when using Chrome on Mac", 7, function(test) {
casper.userAgent(ua.chrome.mac);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.chrome, "Browser should be Chrome");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.chrome, "Browser should be Chrome");
test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
- test.assert(browser.webkit, "Browser should be webkit based");
- test.assertEquals(browser.version, ua.chrome.version, "Version should be " + ua.chrome.version);
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.chrome.version, "Version should be " + ua.chrome.version);
test.assertEquals(browser.versionNumber, ua.chrome.versionNumber, "Number version should be " + ua.chrome.versionNumber);
- test.assert(browser.mac, "Platform should be mac");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.mac, "Platform should be Mac");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using Chrome on an Android device", 6, function(test) {
+casper.test.begin("when using Chrome on an Android device", 7, function(test) {
casper.userAgent(ua.chrome.android);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.chrome, "Browser should be Chrome");
test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
- test.assert(browser.webkit, "Browser should be webkit based");
+ test.assert(browser.webkit, "Browser should be WebKit based");
test.assertEquals(browser.version, ua.chrome.version, "Version should be " + ua.chrome.version);
test.assertEquals(browser.versionNumber, ua.chrome.versionNumber, "Version should be " + ua.chrome.versionNumber);
- test.assert(browser.android, "Platform should be android");
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.android, "Platform should be Android");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Chrome on Linux", 6, function(test) {
+casper.test.begin("when using Chrome on Linux", 7, function(test) {
casper.userAgent(ua.chrome.linux);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.chrome, "Browser should be Chrome");
test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
- test.assert(browser.webkit, "Browser should be webkit based");
+ test.assert(browser.webkit, "Browser should be WebKit based");
test.assertEquals(browser.version, ua.chrome.version, "Version should be " + ua.chrome.version);
test.assertEquals(browser.versionNumber, ua.chrome.versionNumber, "Version should be " + ua.chrome.versionNumber);
- test.assert(browser.linux, "Platform should be linux");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.linux, "Platform should be Linux");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Chrome on Chrome OS", 7, function(test) {
+ casper.userAgent(ua.chrome.cros);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.chrome, "Browser should be Chrome");
+ test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
+
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.chrome.chromeOsVersion, "Version should be " + ua.chrome.chromeOsVersion);
+ test.assertEquals(browser.versionNumber, ua.chrome.chromeOsVersionNumber, "Version should be " + ua.chrome.chromeOsVersionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.cros, "Platform should be Chrome OS");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Firefox on Windows", 6, function(test) {
+casper.test.begin("when using Firefox on Windows", 7, function(test) {
casper.userAgent(ua.firefox.windows);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
- test.assert(browser.mozilla, "Browser should be Mozilla");
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.mozilla, "Browser should be Mozilla");
test.assertEquals(browser.name, ua.firefox.name,"Browser name should be " + ua.firefox.name);
- test.assertEquals(browser.version, ua.firefox.version, "Version should be " + ua.firefox.version);
+ test.assertEquals(browser.version, ua.firefox.version, "Version should be " + ua.firefox.version);
test.assertEquals(browser.versionNumber, ua.firefox.versionNumber, "Version should be " + ua.firefox.versionNumber);
- test.assert(browser.win, "Platform should be Windows");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using Firefox on Mac", 6, function(test) {
+casper.test.begin("when using Firefox on Mac", 7, function(test) {
casper.userAgent(ua.firefox.mac);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.mozilla, "Browser should be Mozilla");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.mozilla, "Browser should be Mozilla");
test.assertEquals(browser.name, ua.firefox.name,"Browser name should be " + ua.firefox.name);
- test.assertEquals(browser.version, ua.firefox.version, "Version should be " + ua.firefox.version);
+ test.assertEquals(browser.version, ua.firefox.version, "Version should be " + ua.firefox.version);
test.assertEquals(browser.versionNumber, ua.firefox.versionNumber, "Version should be " + ua.firefox.versionNumber);
- test.assert(browser.mac, "Platform should be mac");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.mac, "Platform should be Mac");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using Firefox on Linux", 6, function(test) {
+casper.test.begin("when using Firefox on Linux", 7, function(test) {
casper.userAgent(ua.firefox.linux);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.mozilla, "Browser should be Mozilla");
test.assertEquals(browser.name, ua.firefox.name,"Browser name should be " + ua.firefox.name);
test.assertEquals(browser.version, ua.firefox.version, "Version should be " + ua.firefox.version);
test.assertEquals(browser.versionNumber, ua.firefox.versionNumber, "Version should be " + ua.firefox.versionNumber);
- test.assert(browser.linux, "Platform should be linux");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.linux, "Platform should be Linux");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Safari on Mac", 6, function(test) {
+casper.test.begin("when using Safari on Mac", 7, function(test) {
casper.userAgent(ua.safari.mac);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.safari, "Browser should be Safari");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.safari, "Browser should be Safari");
test.assertEquals(browser.name, ua.safari.name,"Browser name should be " + ua.safari.name);
- test.assert(browser.webkit, "Browser should be webkit based");
- test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
test.assertEquals(browser.versionNumber, ua.safari.versionNumber, "Version should be " + ua.safari.versionNumber);
- test.assert(browser.mac, "Platform should be mac");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.mac, "Platform should be Mac");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using Safari on iPad", 6, function(test) {
+casper.test.begin("when using Safari on iPad", 7, function(test) {
casper.userAgent(ua.safari.ipad);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.safari, "Browser should be Safari");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.safari, "Browser should be Safari");
+ test.assertEquals(browser.name, ua.safari.name,"Browser name should be " + ua.safari.name);
+
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
+ test.assertEquals(browser.versionNumber, ua.safari.versionNumber, "Version number should be " + ua.safari.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.ipad, "Platform should be iPad");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Safari on iPhone", 7, function(test) {
+ casper.userAgent(ua.safari.iphone);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.safari, "Browser should be Safari");
test.assertEquals(browser.name, ua.safari.name,"Browser name should be " + ua.safari.name);
- test.assert(browser.webkit, "Browser should be webkit based");
- test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
test.assertEquals(browser.versionNumber, ua.safari.versionNumber, "Version number should be " + ua.safari.versionNumber);
- test.assert(browser.ipad, "Platform should be iPad");
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.iphone, "Platform should be iPhone");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using Safari on iPhone", 6, function(test) {
- casper.userAgent(ua.safari.iphone);
+casper.test.begin("when using Safari on iPod", 7, function(test) {
+ casper.userAgent(ua.safari.ipod);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.safari, "Browser should be Safari");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.safari, "Browser should be Safari");
test.assertEquals(browser.name, ua.safari.name,"Browser name should be " + ua.safari.name);
- test.assert(browser.webkit, "Browser should be webkit based");
- test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.safari.version, "Version should be " + ua.safari.version);
test.assertEquals(browser.versionNumber, ua.safari.versionNumber, "Version number should be " + ua.safari.versionNumber);
- test.assert(browser.iphone, "Platform should be iPhone");
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.ipod, "Platform should be iPod");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using IE9", 6, function(test) {
+casper.test.begin("when using IE9", 7, function(test) {
casper.userAgent(ua.ie.windows.v_9);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.msie, "Browser should be IE");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msie, "Browser should be IE");
test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name);
- test.assertEquals(browser.version, "9.0", "Version should be 9.0");
+ test.assertEquals(browser.version, "9.0", "Version should be 9.0");
test.assertEquals(browser.versionNumber, 9, "Version should be 9");
- test.assert(browser.win, "Platform should be Windows");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using IE10", 6, function(test) {
+casper.test.begin("when using IE10", 7, function(test) {
casper.userAgent(ua.ie.windows.v_10);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.msie, "Browser should be IE");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msie, "Browser should be IE");
test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name);
- test.assertEquals(browser.version, "10.0", "Version should be 10");
+ test.assertEquals(browser.version, "10.0", "Version should be 10");
test.assertEquals(browser.versionNumber, 10, "Version should be 10");
- test.assert(browser.win, "Platform should be Windows");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using IE11", 6, function(test) {
+casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) {
+ casper.userAgent(ua.ie.win_phone.v_10);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msie, "Browser should be IE");
+ test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name);
+
+ test.assertEquals(browser.version, "10.0", "Version should be 10.0");
+ test.assertEquals(browser.versionNumber, 10, "Version should be 10");
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser["windows phone"], "Platform should be Windows Phone");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using IE11", 7, function(test) {
casper.userAgent(ua.ie.windows.v_11);
casper.start(test_url).then(function(){
-
- var browser = casper.evaluate(function(){
- return $.browser;
- });
-
- test.assert(browser.msie, "Browser should be IE");
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msie, "Browser should be IE");
test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name);
- test.assertEquals(browser.version, "11.0", "Version should be 11.0");
+ test.assertEquals(browser.version, "11.0", "Version should be 11.0");
test.assertEquals(browser.versionNumber, 11, "Version should be 11");
- test.assert(browser.win, "Platform should be Windows");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
- test.done();
+ test.done();
});
});
-casper.test.begin("when using IE10 on a Windows Phone", 6, function(test) {
- casper.userAgent(ua.ie.win_phone.v_10);
+casper.test.begin("when using IE11 on a Windows Phone", 7, function(test) {
+ casper.userAgent(ua.ie.win_phone.v_11);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
- return $.browser;
+ return $.browser;
});
-
+
test.assert(browser.msie, "Browser should be IE");
test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name);
- test.assertEquals(browser.version, "10.0", "Version should be 10.0");
- test.assertEquals(browser.versionNumber, 10, "Version should be 10");
+ test.assertEquals(browser.version, "11.0", "Version should be 11.0");
+ test.assertEquals(browser.versionNumber, 11, "Version should be 11");
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
test.assert(browser["windows phone"], "Platform should be Windows Phone");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Opera 15+ on Windows", 6, function(test) {
+casper.test.begin("when using Microsoft Edge 12", 7, function(test) {
+ casper.userAgent(ua.msedge.windows.v_12);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msedge, "Browser should be MS Edge");
+ test.assertEquals(browser.name, ua.msedge.name,"Browser name should be " + ua.msedge.name);
+
+ test.assertEquals(browser.version, "12.0", "Version should be 12.0");
+ test.assertEquals(browser.versionNumber, 12, "Version should be 12");
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Microsoft Edge 13", 7, function(test) {
+ casper.userAgent(ua.msedge.windows.v_13);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msedge, "Browser should be MS Edge");
+ test.assertEquals(browser.name, ua.msedge.name,"Browser name should be " + ua.msedge.name);
+
+ test.assertEquals(browser.version, "13.10586", "Version should be 13.10586");
+ test.assertEquals(browser.versionNumber, 13, "Version should be 13");
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Microsoft Edge v13 on a Windows Phone", 7, function(test) {
+ casper.userAgent(ua.msedge.win_phone.v_13);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.msedge, "Browser should be MS Edge");
+ test.assertEquals(browser.name, ua.msedge.name,"Browser name should be " + ua.msedge.name);
+
+ test.assertEquals(browser.version, "13.10586", "Version should be 13.10586");
+ test.assertEquals(browser.versionNumber, 13, "Version should be 13");
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser["windows phone"], "Platform should be Windows Phone");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+
+casper.test.begin("when using Opera 15+ on Windows", 7, function(test) {
casper.userAgent(ua.opera.v_15.windows);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.opera, "Browser should be Opera");
test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name);
test.assertEquals(browser.version, ua.opera.v_15.version, "Version should be " + ua.opera.v_15.version);
test.assertEquals(browser.versionNumber, ua.opera.v_15.versionNumber, "Version number should be " + ua.opera.v_15.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
test.assert(browser.win, "Platform should be Windows");
- test.assert(browser.webkit, "Browser should be webkit based");
+ test.assert(browser.webkit, "Browser should be WebKit based");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Opera 15+ on Mac", 6, function(test) {
+casper.test.begin("when using Opera 15+ on Mac", 7, function(test) {
casper.userAgent(ua.opera.v_15.mac);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.opera, "Browser should be Opera");
test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name);
- test.assertEquals(browser.version, ua.opera.v_15.version, "Version should be " + ua.opera.v_15.version)
+ test.assertEquals(browser.version, ua.opera.v_15.version, "Version should be " + ua.opera.v_15.version);
test.assertEquals(browser.versionNumber, ua.opera.v_15.versionNumber, "Version number should be " + ua.opera.v_15.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
test.assert(browser.mac, "Platform should be Mac");
- test.assert(browser.webkit, "Browser should be webkit based");
+ test.assert(browser.webkit, "Browser should be WebKit based");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Opera 10 on Windows", 6, function(test) {
+casper.test.begin("when using Opera 10 on Windows", 7, function(test) {
casper.userAgent(ua.opera.v_10.windows);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.opera, "Browser should be Opera");
test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name);
test.assertEquals(browser.version, ua.opera.v_10.version, "Version should be " + ua.opera.v_10.version);
test.assertEquals(browser.versionNumber, ua.opera.v_10.versionNumber, "Version number should be " + ua.opera.v_10.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
test.assert(browser.win, "Platform should be Windows");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
}).run(function(){
test.done();
});
});
-casper.test.begin("when using Opera 10 on Mac", 6, function(test) {
+casper.test.begin("when using Opera 10 on Mac", 7, function(test) {
casper.userAgent(ua.opera.v_10.mac);
casper.start(test_url).then(function(){
-
+
var browser = casper.evaluate(function(){
return $.browser;
});
-
+
test.assert(browser.opera, "Browser should be Opera");
test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name);
test.assertEquals(browser.version, ua.opera.v_10.version, "Version should be " + ua.opera.v_10.version);
test.assertEquals(browser.versionNumber, ua.opera.v_10.versionNumber, "Version number should be " + ua.opera.v_10.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
test.assert(browser.mac, "Platform should be Mac");
- test.assertFalsy(browser.webkit, "Browser should NOT be webkit based");
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Opera 12.11 on Windows", 7, function(test) {
+ casper.userAgent(ua.opera.v_12.windows);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.opera, "Browser should be Opera");
+ test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name);
+
+ test.assertEquals(browser.version, ua.opera.v_12.version, "Version should be " + ua.opera.v_12.version);
+ test.assertEquals(browser.versionNumber, ua.opera.v_12.versionNumber, "Version number should be " + ua.opera.v_12.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Opera 12.11 on Mac", 7, function(test) {
+ casper.userAgent(ua.opera.v_12.mac);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.opera, "Browser should be Opera");
+ test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name);
+
+ test.assertEquals(browser.version, ua.opera.v_12.version, "Version should be " + ua.opera.v_12.version);
+ test.assertEquals(browser.versionNumber, ua.opera.v_12.versionNumber, "Version number should be " + ua.opera.v_12.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.mac, "Platform should be Mac");
+
+ test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Android 4.4 stock browser on Android", 6, function(test) {
+ casper.userAgent(ua.android.v_4_4.android);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.android, "Browser should be Android");
+ test.assertEquals(browser.name, ua.android.name,"Browser name should be " + ua.android.name);
+
+ test.assertEquals(browser.version, ua.android.v_4_4.version, "Version should be " + ua.android.v_4_4.version);
+ test.assertEquals(browser.versionNumber, ua.android.v_4_4.versionNumber, "Version number should be " + ua.android.v_4_4.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.webkit, "Browser should be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Kindle 4 stock browser", 6, function(test) {
+ casper.userAgent(ua.kindle.v_4.kindle);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.kindle, "Browser should be Kindle");
+ test.assertEquals(browser.name, ua.kindle.name,"Browser name should be " + ua.kindle.name);
+
+ test.assertEquals(browser.version, ua.kindle.v_4.version, "Version should be " + ua.kindle.v_4.version);
+ test.assertEquals(browser.versionNumber, ua.kindle.v_4.versionNumber, "Version number should be " + ua.kindle.v_4.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.webkit, "Browser should be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using Kindle Silk 5 browser", 6, function(test) {
+ casper.userAgent(ua.silk.v_5.silk);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.silk, "Browser should be Silk");
+ test.assertEquals(browser.name, ua.silk.name,"Browser name should be " + ua.silk.name);
+
+ test.assertEquals(browser.version, ua.silk.v_5.version, "Version should be " + ua.silk.v_5.version);
+ test.assertEquals(browser.versionNumber, ua.silk.v_5.versionNumber, "Version number should be " + ua.silk.v_5.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.webkit, "Browser should be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using BlackBerry 7 stock browser", 6, function(test) {
+ casper.userAgent(ua.blackberry.v_7.blackberry);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.blackberry, "Browser should be BlackBerry");
+ test.assertEquals(browser.name, ua.blackberry.name,"Browser name should be " + ua.blackberry.name);
+
+ test.assertEquals(browser.version, ua.blackberry.v_7.version, "Version should be " + ua.blackberry.v_7.version);
+ test.assertEquals(browser.versionNumber, ua.blackberry.v_7.versionNumber, "Version number should be " + ua.blackberry.v_7.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.webkit, "Browser should be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using BB10 stock browser", 6, function(test) {
+ casper.userAgent(ua.bb.v_10.bb);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.blackberry, "Browser should be BlackBerry");
+ test.assertEquals(browser.name, ua.blackberry.name,"Browser name should be " + ua.blackberry.name);
+
+ test.assertEquals(browser.version, ua.bb.v_10.version, "Version should be " + ua.bb.v_10.version);
+ test.assertEquals(browser.versionNumber, ua.bb.v_10.versionNumber, "Version number should be " + ua.bb.v_10.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.webkit, "Browser should be WebKit based");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when using BlackBerry PlayBook stock browser", 6, function(test) {
+ casper.userAgent(ua.playbook.v_7.playbook);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return $.browser;
+ });
+
+ test.assert(browser.playbook, "Browser should be BlackBerry PlayBook");
+ test.assertEquals(browser.name, ua.playbook.name,"Browser name should be " + ua.playbook.name);
+
+ test.assertEquals(browser.version, ua.playbook.v_7.version, "Version should be " + ua.playbook.v_7.version);
+ test.assertEquals(browser.versionNumber, ua.playbook.v_7.versionNumber, "Version number should be " + ua.playbook.v_7.versionNumber);
+
+ test.assert(browser.mobile, "Browser platform should be mobile");
+ test.assert(browser.webkit, "Browser should be WebKit based");
}).run(function(){
test.done();
casper.exit();
});
});
+
+casper.test.begin("when using Chrome on Windows w/o jQuery", 7, function(test) {
+ casper.userAgent(ua.chrome.windows);
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return window.jQBrowser;
+ });
+
+ test.assert(browser.chrome, "Browser should be Chrome");
+ test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
+
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.chrome.version, "String version should be " + ua.chrome.version);
+ test.assertEquals(browser.versionNumber, ua.chrome.versionNumber, "Number version should be " + ua.chrome.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ }).run(function(){
+ test.done();
+ });
+});
+
+casper.test.begin("when trying to match a browser that is not the browser used by the user", 7, function(test) {
+ casper.userAgent(ua.chrome.mac); // Use the Mac Chrome browser
+
+ casper.start(test_url).then(function(){
+
+ var browser = casper.evaluate(function(){
+ return window.jQBrowser.uaMatch(ua.chrome.windows); // Match the Windows Chrome browser
+ });
+
+ test.assert(browser.chrome, "Browser should be Chrome");
+ test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name);
+
+ test.assert(browser.webkit, "Browser should be WebKit based");
+ test.assertEquals(browser.version, ua.chrome.version, "String version should be " + ua.chrome.version);
+ test.assertEquals(browser.versionNumber, ua.chrome.versionNumber, "Number version should be " + ua.chrome.versionNumber);
+
+ test.assert(browser.desktop, "Browser platform should be desktop");
+ test.assert(browser.win, "Platform should be Windows");
+
+ }).run(function(){
+ test.done();
+ });
+});