Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Build: Build Status Latest Selenium 3.x: Build Status

selenium-video-node

This project adds video recording capability to a Selenium Grid. Videos are encoded into WebM/VP8 format on-the-fly and made available at the end of the test.

Features

  • Easy setup - just need to add another JAR file to the Selenium Node classpath
  • Excellent video quality (at about 8-15 frames/sec)
  • Additional support when running under the Xvfb virtual X Server on Linux (6 times faster video encoding)
  • Simple API to retrieve videos
  • Extensible storage mechanism for video storage

Mis-Features

  • Video encoding is done using native code (using JNA) - unfortunately this means that additional effort is required to support more plaforms.

Example videos

For example videos recorded using this plugin, see the examples page.

Video Node System Requirements

  • A dual core processor (one core for video encoding, another for everything else). It is possible to lower this requirement by reducing the framerate.

  • 32-bit colour display output - 8 bits red, 8 bits blue, 8 bits green, with either 8 bits of alpha or 8 bits unused. See Wikipedia for more information.

  • A Java 6 JVM (or higher) running on one of the following platforms:

PlatformSupportTested?Jenkins Build
Linux x86_64 (64-bit)YesYesBuild Status
Linux x86 (32-bit)YesYesBuild Status
Windows x86_64 (64-bit)Yes¹Yes¹
Windows x86 (32-bit)YesYes
Mac OS X 10.9 x86_64 (64 bit)²YesYes
Mac OS X 10.5-10.8 x86_64 (64-bit)²YesNo

¹ - Compiled and tested on Windows 7. ² - Compiled with flag -mmacosx-version-min=10.5 - it should work with older OS X versions.

The above does not apply to the Selenium Hub, which does not perform any video processing.

Downloads

Download the latest version from Maven Central:

http://repo1.maven.org/maven2/com/aimmac23/selenium-video-node/

Older releases can be found here:

https://aimmac23.com/public/maven-repository/com/aimmac23/selenium-video-node/

Alternatively, if you are creating your own Selenium Maven project, add the following to your POM file's dependency section:

<dependency>
<groupId>com.aimmac23</groupId>
<artifactId>selenium-video-node</artifactId>
<version>2.8</version>
</dependency>

Basic Installation

To get the plugin working on your Selenium grid, see Installation

Additional Features

The Video Nodes can change some of their behaviour, based on certain command-line parameters. See Additional Features on how to make that happen.

About

Code to add video recording capability to Selenium Nodes

Resources

Stars

100 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages