- WebDriverManager is a Java library that automates the management of binary drivers (like chromedriver) required by Selenium WebDriver. It handles downloading the correct driver version and setting the driver executable path so it is findable at runtime.
- Selenium-Jupiter is a JUnit 5 extension that makes it easier to use Selenium from Java tests. It leverages JUnit 5's extension model to minimize boilerplate code needed to use Selenium. It also allows testing against browsers and Android devices running in Docker containers.
- The presentation discusses these two open source Selenium tools - WebDriverManager for automating driver management and Selenium-Jupiter for streamlining Selenium testing with JUnit 5. It provides examples of how to use the libraries
Learn the fundamental concepts and differences between JavaScript and TypeScript to understand the comparison between the two scripting languages.
For More Information: https://www.albiorixtech.com/blog/typescript-vs-javascript/
Learn the fundamental concepts and differences between JavaScript and TypeScript to understand the comparison between the two scripting languages.
For More Information: https://www.albiorixtech.com/blog/typescript-vs-javascript/
Slide introduttive al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Lezione del 12-10-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
A university lecture for journalism students -- how to use the canvas element to add graphics and animation to Web pages. Updated April 2014. Basics for beginners. See also https://github.com/macloo/canvas
Slide 1
TypeScript
* This presentation is to show TypeScript's major feature and the benefit that it brings to your JavaScript projects.
* Our main objective is just to spark interest especially to those not familiar with the tool.
Slide 2
- What is TypeScript
* go to next slide
Slide 3
- Is a superset of JavaScript
* it simply means an extension to JavaScript
- Use JavaScript code on TypeScript
* JS code naturally works on TypeScript
* Which also means your beloved JavaScript libraries such as JQuery, or your fancy interacive plugins would work as well.
- TypeScript compiles to plain old JavaScript
* TS code compiles to simple and clean JS.
Slide 4
- Screenshot of TS compiled to JS
* In this example, compiling a TS class code would result to a JS version, and a regular JavaScript function when compiled is basically untouched.
Slide 5
- TypeScript's Main Feature
* So what does TS provide us with? What does it actually do?
Slide 6
- Static Type Checking
* TypeScript allows us to enable type checking by defining data types to your for ex. variables, function parameters and return types.
Slide 7
- Screenshot of basic Static Type Checking
* In this example…
* What I've done here was to assign supposedly wrong values for what the variables or parameters were meant to hold
* As JavaScript is a dynamic and untyped language these expressions would either fail or be okay when you run it on your browser.
* In TypeScript by enabling static type checking these potential errors are caught earlier (see the red marks on the expressions) and wouldn't even allow you to compile unless these are resolved.
* In addition you can also type arrays and object literals
Slide 8
- Effects of Static Type Checking
* As TS code is statically type-checked a side effect of such...
- Allows IDEs to perform live error checks
- Exposes auto-completion and code hinting
Slide 9
- Screenshot of code hinting
* Say I was coding JQuery on regular JavaScript code there would be no natural way to help me identify its class properties, methods and parameters... except through reading the API documentation or a separate plugin.
* As a result of static type checking this allows IDE's to access these class members as code hints
* So if this was a 3rd party library how much more if you are just referencing your own JavaScript/TypeScript files within your project.
Slide 10
- A few of the other cool features
* That was only the basic feature of TypeScript
* A few of the other cool features are...
Slide 11
- End
Just a simple intro to typescript.
Most of the contents are of any OO language, hence slide contents are minimal. If anyone need any further help, reach me out - akhil2369492@gmail.com
-Akhil
This is a good opportunity for those who want to learn Selenium and wondering where to start from. This presentation covers the topics related to Selenium IDE and locators. This would help in understanding the more complex Selenium Webdriver that will be taken up in next session.
YouTube Link: https://youtu.be/Ia0FSogTRaw
** Full Stack Web Development Training: https://www.edureka.co/masters-program/full-stack-developer-training **
This Edureka PPT on What is JavaScript explains all the fundamentals of JavaScript with examples. It also explains various features and applications of JavaScript in the following sequence:
Origin of JavaScript
What is JavaScript?
What can JavaScript do?
JavaScript Frameworks
HTML vs CSS vs JavaScript
Benefits of JavaScript
JavaScript Fundamentals
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
TypeScript is a super set of JavaScript. This slide covers the key features of TypeScript including basics of typescript, basic types, Interfaces, Functions, Classes, Generics, Modules.
String Function
1. charAt():
This method returns the character from the specified index.Characters in a string are indexed from left to right. The index of the first character is 0, and the index of the last character in a string called stringName is stringName.length - 1.
Syntax:
string.charAt(index);
Return Value:
Returns the character from the specified index.
Example:
<html>
<head>
<title>JavaScript String charAt() Method</title>
</head>
<body>
</body>
</html>
Output:
str.charAt(0) is:T
2. concat():
Description:
This method adds two or more strings and returns a new single string.
Syntax:
string.concat(string2, string3[, ..., stringN]);
parameters:
string2...stringN : These are the strings to be concatenated.
Return Value:
Returns a single concatenated string.
Example:
<html>
<head>
<title>JavaScript String concat() Method</title>
</head>
<body>
</body>
</html>
Output:
Concatenated String :This is string oneThis is string two.
3. indexOf():
Description:
This method returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex or -1 if the value is not found.
Syntax:
string.indexOf(searchValue[, fromIndex])
Parameters:
searchValue : A string representing the value to search for.
fromIndex : The location within the calling string to start the search from. It can be any integer between 0 and the length of the string. The default value is 0.
Return Value:
Returns the index of the found occurrence otherwise -1 if not found.
Example:
<html>
<head>
<title>JavaScript String indexOf() Method</title>
</head>
<body>
<br />");
var index = str1.indexOf( "one" );
document.write("indexOf found String :" + index );
</body></html>
Oputput:
indexOf found String :8
indexOf found String :15
4. lastIndexOf():
Description:
This method returns the index within the calling String object of the last occurrence of the specified value, starting the search at fromIndex or -1 if the value is not found.
Syntax:
string.lastIndexOf(searchValue[, fromIndex])
Parameters:
searchValue : A string representing the value to search for.
fromIndex : The location within the calling string to start the search from. It can be any integer between 0 and the length of the string. The default value is 0.
Return Value:
Returns the index of the last found occurrence otherwise -1 if not found.
Example:
<html>
<head>
<title>JavaScri
YouTube Link: https://youtu.be/k0SMuHlmATs
***** Javascript Online Training: https://www.edureka.co/javascript-jquery-training *****
***** Java Online Training:https://www.edureka.co/java-j2ee-training-course *****
This Edureka PPT on Java vs JavaScript provides you with a short and crisp description of the two programming languages. You will also see the head to head comparison between the two on various aspects and learn the similarities and differences between them.
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Slide introduttive al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Lezione del 12-10-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
A university lecture for journalism students -- how to use the canvas element to add graphics and animation to Web pages. Updated April 2014. Basics for beginners. See also https://github.com/macloo/canvas
Slide 1
TypeScript
* This presentation is to show TypeScript's major feature and the benefit that it brings to your JavaScript projects.
* Our main objective is just to spark interest especially to those not familiar with the tool.
Slide 2
- What is TypeScript
* go to next slide
Slide 3
- Is a superset of JavaScript
* it simply means an extension to JavaScript
- Use JavaScript code on TypeScript
* JS code naturally works on TypeScript
* Which also means your beloved JavaScript libraries such as JQuery, or your fancy interacive plugins would work as well.
- TypeScript compiles to plain old JavaScript
* TS code compiles to simple and clean JS.
Slide 4
- Screenshot of TS compiled to JS
* In this example, compiling a TS class code would result to a JS version, and a regular JavaScript function when compiled is basically untouched.
Slide 5
- TypeScript's Main Feature
* So what does TS provide us with? What does it actually do?
Slide 6
- Static Type Checking
* TypeScript allows us to enable type checking by defining data types to your for ex. variables, function parameters and return types.
Slide 7
- Screenshot of basic Static Type Checking
* In this example…
* What I've done here was to assign supposedly wrong values for what the variables or parameters were meant to hold
* As JavaScript is a dynamic and untyped language these expressions would either fail or be okay when you run it on your browser.
* In TypeScript by enabling static type checking these potential errors are caught earlier (see the red marks on the expressions) and wouldn't even allow you to compile unless these are resolved.
* In addition you can also type arrays and object literals
Slide 8
- Effects of Static Type Checking
* As TS code is statically type-checked a side effect of such...
- Allows IDEs to perform live error checks
- Exposes auto-completion and code hinting
Slide 9
- Screenshot of code hinting
* Say I was coding JQuery on regular JavaScript code there would be no natural way to help me identify its class properties, methods and parameters... except through reading the API documentation or a separate plugin.
* As a result of static type checking this allows IDE's to access these class members as code hints
* So if this was a 3rd party library how much more if you are just referencing your own JavaScript/TypeScript files within your project.
Slide 10
- A few of the other cool features
* That was only the basic feature of TypeScript
* A few of the other cool features are...
Slide 11
- End
Just a simple intro to typescript.
Most of the contents are of any OO language, hence slide contents are minimal. If anyone need any further help, reach me out - akhil2369492@gmail.com
-Akhil
This is a good opportunity for those who want to learn Selenium and wondering where to start from. This presentation covers the topics related to Selenium IDE and locators. This would help in understanding the more complex Selenium Webdriver that will be taken up in next session.
YouTube Link: https://youtu.be/Ia0FSogTRaw
** Full Stack Web Development Training: https://www.edureka.co/masters-program/full-stack-developer-training **
This Edureka PPT on What is JavaScript explains all the fundamentals of JavaScript with examples. It also explains various features and applications of JavaScript in the following sequence:
Origin of JavaScript
What is JavaScript?
What can JavaScript do?
JavaScript Frameworks
HTML vs CSS vs JavaScript
Benefits of JavaScript
JavaScript Fundamentals
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
TypeScript is a super set of JavaScript. This slide covers the key features of TypeScript including basics of typescript, basic types, Interfaces, Functions, Classes, Generics, Modules.
String Function
1. charAt():
This method returns the character from the specified index.Characters in a string are indexed from left to right. The index of the first character is 0, and the index of the last character in a string called stringName is stringName.length - 1.
Syntax:
string.charAt(index);
Return Value:
Returns the character from the specified index.
Example:
<html>
<head>
<title>JavaScript String charAt() Method</title>
</head>
<body>
</body>
</html>
Output:
str.charAt(0) is:T
2. concat():
Description:
This method adds two or more strings and returns a new single string.
Syntax:
string.concat(string2, string3[, ..., stringN]);
parameters:
string2...stringN : These are the strings to be concatenated.
Return Value:
Returns a single concatenated string.
Example:
<html>
<head>
<title>JavaScript String concat() Method</title>
</head>
<body>
</body>
</html>
Output:
Concatenated String :This is string oneThis is string two.
3. indexOf():
Description:
This method returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex or -1 if the value is not found.
Syntax:
string.indexOf(searchValue[, fromIndex])
Parameters:
searchValue : A string representing the value to search for.
fromIndex : The location within the calling string to start the search from. It can be any integer between 0 and the length of the string. The default value is 0.
Return Value:
Returns the index of the found occurrence otherwise -1 if not found.
Example:
<html>
<head>
<title>JavaScript String indexOf() Method</title>
</head>
<body>
<br />");
var index = str1.indexOf( "one" );
document.write("indexOf found String :" + index );
</body></html>
Oputput:
indexOf found String :8
indexOf found String :15
4. lastIndexOf():
Description:
This method returns the index within the calling String object of the last occurrence of the specified value, starting the search at fromIndex or -1 if the value is not found.
Syntax:
string.lastIndexOf(searchValue[, fromIndex])
Parameters:
searchValue : A string representing the value to search for.
fromIndex : The location within the calling string to start the search from. It can be any integer between 0 and the length of the string. The default value is 0.
Return Value:
Returns the index of the last found occurrence otherwise -1 if not found.
Example:
<html>
<head>
<title>JavaScri
YouTube Link: https://youtu.be/k0SMuHlmATs
***** Javascript Online Training: https://www.edureka.co/javascript-jquery-training *****
***** Java Online Training:https://www.edureka.co/java-j2ee-training-course *****
This Edureka PPT on Java vs JavaScript provides you with a short and crisp description of the two programming languages. You will also see the head to head comparison between the two on various aspects and learn the similarities and differences between them.
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Android UI Testing with Appium
This presentation covers:
- how appium works
- setting up test development environment with AndroidStudio
- running tests
- UI automation best practices
- common problems with automation
Selenium has become the de-facto standard framework for end-to-end web testing nowadays. JUnit 5 is the latest version of this popular testing framework and implements a brand-new programming and extension model named Jupiter. This talk presents Selenium-Jupiter (https://bonigarcia.github.io/selenium-jupiter/), an open-source JUnit 5 extension aimed to provide seamless integration with Selenium. At first glance, it allows creating Selenium tests using local or remote browsers, reducing the required boilerplate thanks to the dependency injection mechanism supported in JUnit 5. Moreover, it will enable us to use different types of web browsers and Android devices in Docker containers out of the box. All in all, Selenium-Jupiter can be used to carry out different types of tests for web and mobile applications, including functional, compatibility (using test templates to define different devices or browsers -types and versions-) or performance tests.
Selenium is an open source automation tool for test driving browser-based applications. WebDriver, the newly-introduced API for Selenium against which tests are written in Java, contains classes including ChromeDriver, AndroidDriver, and iPhoneDriver. Sometimes test authors find the API daunting and their initial automation code brittle and poorly structured. In this introduction, Alan Richardson provides hints and tips gained from his years of experience both using WebDriver and helping others improve their use of the tool. Alan starts at the beginning, explaining the basic WebDriver API capabilities—simple interrogation and navigation—and then moves on to synchronization strategies and working with AJAX applications. He covers tools and location strategies to find elements on web pages using CSS and XPath. Alan provides an introduction to abstraction approaches which help you build robust, reliable, and maintainable automation suites.
Getting up and running with selenium for automated Code palousaEmma Armstrong
These slidesSlides for getting started with using Nunit and Selenium to test your web applications. Examples in C# with a link to a gitHub repository and a brief Java example.
Main instruments used for Web UI test automation.
Drivers: Selenium WebDriver, Sikuli X.
Frameworks: PageFactory, TestNG.
Other tools: Apache Ant, Jenkins CI.
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!Puneet Kala
Presentation from JAB-2014, I have talked about how we have setup PHPUnit and Selenium Webdriver for Testing Joomla CMS!,
How we can setup System test Suite for a Joomla! Component
In this quality assurance training session, you will learn Selenium WebDriver. Topics covered in this course are:
• Selenium Components
• Introduction to Web Driver
• Downloading and Configuring Web Driver with Eclipse
• Web Driver Methods
• Web Driver Locators
• Interacting with different UI elements
• Synchronization, Alert and multiple window
• Dynamic Menus
• Cookie Management
• Launching different web browsers
• Introduction to Test NG
TO know more, visit this link: https://www.mindsmapped.com/courses/quality-assurance/get-practical-training-on-software-testing-quality-assurance-qa/
how to write functional tests with Selenium. how to set up Selenium Testing On Grails Apps In Continuous
Integration Using two approaches: The long way – using Maven and/or Ant The fast way, using the grails-
selenium-rc plug-in - ( see
http://buildchimp.com/wordpress/?p=241 )
Presented at Bucharest Java User Group, http://www.bjug.ro/editii/5.html . Project source code available at: https://github.com/bucharest-jug/dropwizard-todo
Selenium Manager: Automated Driver & Browser Management for Selenium WebDriverBoni García
Selenium WebDriver is an open source library that allows controlling web browsers (e.g., Chrome, Firefox, Edge, etc.) programmatically using different languages (such as Java, JavaScript, Python, Ruby, or C#). Internally, Selenium WebDriver uses the native support implemented by each browser to carry out the automation process. For this reason, we need to place a component called driver (e.g., chromedriver, geckodriver, msedgedriver, etc.) between the script using the Selenium WebDriver API and the browser.
Historically, the Selenium project did not cover the automated management (understood as the process of download, setup, and maintenance) of drivers. For this reason, different projects in the Selenium ecosystem emerged to do this task (such as WebDriverManager in Java or webdriver-manager in Python, among others). As of Selenium 4.6.0, automated driver management is shipped in Selenium WebDriver out of the box. This way, the driver management is done automatically and transparently for all Selenium WebDriver binding languages. This process is done through a new official tool of the Selenium portfolio called Selenium Manager.
Selenium Manager is a CLI tool developed in Rust. It provides a robust mechanism to detect the version of the local browser to be controlled with Selenium WebDriver, download the proper driver, and make it available for Selenium WebDriver. Moreover, Selenium Manager has another relevant feature in its roadmap: the automatic management (i.e., download and installation) of browsers (such as Chrome, Firefox, or Edge).
Selenium Manager has been built with the lessons learned from the development of WebDriverManager (first released in 2015). This way, the history of Selenium Manager is the history of how an independent third-party project has become part of the Selenium code development.
Functional testing of web and mobile applications consists on impersonating a user through some kind of GUI automation technology, being Selenium the most popular solution nowadays. This piece of research progresses in this area by proposing an advanced User Impersonation as a Service (UIaaS) based on cloud technologies. The proposed approach can be seen as a layered service, in which the top tier is a platform called ElasTest, a Software as a Service (SaaS) testing tool aimed to ease end-to-end testing of different kind of applications. The capability to impersonate user provided by ElasTest is built on the top of a Platform as a Service (PaaS) implemented by extending the W3C WebDriver recommendation with advance features to assess web and mobile applications. Finally, an Infrastructure as a Service (IaaS) layer is used as ground technology. This infrastructure has been implemented by leveraging open source lightweight container technologies such as Docker and Kubernetes.
This presentation presents the concept of test orchestration, understood as a novel way to select, order, and execute in parallel a group of tests. Our view of test orchestration can be seen as a process in which different test cases are organized, assembled and executed following a topology that determines how their executions coordinate. We distinguish two types of orchestrations techniques: i) verdict-driven, which organizes tests using their outcome (i.e., passed or failed) to drive the workflow; and ii) data-driven, in which test data (input) and test outcomes (output) are handled within the graph. Both approaches are being implemented in the project ElasTest, an open source platform aimed to simplify the end-to-end test process of large software systems.
Introducción y novedades de JUnit 5 (04/07/2018)Boni García
JUnit es el framework de pruebas más popular en la comunidad Java, y uno de los más influyentes en la ingeniería de software en general. La versión 5 de JUnit (publicada en su primera versión estable el 10 de septiembre de 2017) ha supuesto el rediseño completo del framework, además de contar con un buen puñado de nuevas e interesantes características (features).
En esta charla vamos a revisar las principales novedades de JUnit 5, presentando su nuevo modelo de programación y extensiones (bautizado como Jupiter por el equipo de JUnit). Además, estudiaremos conceptos generales del mundo de las pruebas en el software (testing) que nos permitirán desarrollar y probar nuestras aplicaciones garantizando un nivel alto de calidad y confianza en el producto final.
User Impersonation as a Service in End-to-End TestingBoni García
Testing large distributed heterogeneous systems in cloud environments is a complex task. This situation becomes especially difficult when carrying out end-to-end tests, in which the whole system is exercised, typically through its graphical user interface (GUI) with impersonated users. These tests are typically expensive to write and time consuming to run. This paper contributes to the solution of this problem by proposing an open source framework called ElasTest, which can be seen as an elastic platform to carry out end-to-end testing for different types of applications, including web and mobile. In particular, this piece or research puts the accent on the capability to impersonate final users, presenting a real case study in which end-to-end tests have been carried out to assess the correctness of real-time communications among browsers using WebRTC.
Introducción y novedades de JUnit 5 (16/01/2018)Boni García
JUnit es el framework de pruebas más popular en la comunidad Java, y uno de los más influyentes en la ingeniería de software en general. La versión 5 de JUnit (publicada en su primera versión estable el 10 de septiembre de 2017) ha supuesto el rediseño completo del framework, además de contar con un buen puñado de nuevas e interesantes características (features).
En esta charla vamos a revisar las principales novedades de JUnit 5, presentando su nuevo modelo de programación y extensiones (bautizado como Jupiter por el equipo de JUnit). Además, estudiaremos conceptos generales del mundo de las pruebas en el software (testing) que nos permitirán desarrollar y probar nuestras aplicaciones garantizando un nivel alto de calidad y confianza en el producto final.
Analysis of video quality and end-to-end latency in WebRTCBoni García
Fifth IEEE International Workshop on
Quality of Experience for Multimedia Communications - QoEMC2016
IEEE GLOBECOM 2016
Washington, DC USA, 8 December, 2016
NUBOMEDIA is the first open source elastic cloud PaaS (Platform as a Service) specifically designed for real-time interactive multimedia services, which exposes its capabilities through simple APIs. It has been created on the top of Kurento technologies. This presentation provides an overview of NUBOMEDIA and details to create apps ready to be deployed on the NUBOMEDIA PaaS.
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96Boni García
In this hackathon you will be playing with WebRTC technologies and standards for creating rich real-time communication applications. For this, in addition to using WebRTC clients, we will introduce a WebRTC infrastructure suitable for providing advanced capabilities that include group communications, recording, transcoding and media processing. This infrastructure will be based on NUBOMEDIA: a cloud Platform as a Service where you will be able to deploy, execute and scale your WebRTC applications in a seamless way.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
In the ever-evolving landscape of technology, enterprise software development is undergoing a significant transformation. Traditional coding methods are being challenged by innovative no-code solutions, which promise to streamline and democratize the software development process.
This shift is particularly impactful for enterprises, which require robust, scalable, and efficient software to manage their operations. In this article, we will explore the various facets of enterprise software development with no-code solutions, examining their benefits, challenges, and the future potential they hold.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
AI Genie Review: World’s First Open AI WordPress Website CreatorGoogle
AI Genie Review: World’s First Open AI WordPress Website Creator
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-genie-review
AI Genie Review: Key Features
✅Creates Limitless Real-Time Unique Content, auto-publishing Posts, Pages & Images directly from Chat GPT & Open AI on WordPress in any Niche
✅First & Only Google Bard Approved Software That Publishes 100% Original, SEO Friendly Content using Open AI
✅Publish Automated Posts and Pages using AI Genie directly on Your website
✅50 DFY Websites Included Without Adding Any Images, Content Or Doing Anything Yourself
✅Integrated Chat GPT Bot gives Instant Answers on Your Website to Visitors
✅Just Enter the title, and your Content for Pages and Posts will be ready on your website
✅Automatically insert visually appealing images into posts based on keywords and titles.
✅Choose the temperature of the content and control its randomness.
✅Control the length of the content to be generated.
✅Never Worry About Paying Huge Money Monthly To Top Content Creation Platforms
✅100% Easy-to-Use, Newbie-Friendly Technology
✅30-Days Money-Back Guarantee
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIGenieApp #AIGenieBonus #AIGenieBonuses #AIGenieDemo #AIGenieDownload #AIGenieLegit #AIGenieLiveDemo #AIGenieOTO #AIGeniePreview #AIGenieReview #AIGenieReviewandBonus #AIGenieScamorLegit #AIGenieSoftware #AIGenieUpgrades #AIGenieUpsells #HowDoesAlGenie #HowtoBuyAIGenie #HowtoMakeMoneywithAIGenie #MakeMoneyOnline #MakeMoneywithAIGenie
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Understanding Nidhi Software Pricing: A Quick Guide 🌟
Choosing the right software is vital for Nidhi companies to streamline operations. Our latest presentation covers Nidhi software pricing, key factors, costs, and negotiation tips.
📊 What You’ll Learn:
Key factors influencing Nidhi software price
Understanding the true cost beyond the initial price
Tips for negotiating the best deal
Affordable and customizable pricing options with Vector Nidhi Software
🔗 Learn more at: www.vectornidhisoftware.com/software-for-nidhi-company/
#NidhiSoftwarePrice #NidhiSoftware #VectorNidhi
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-Jupiter
1. Toolbox for Selenium Tests in
Java: WebDriverManager and
Selenium-Jupiter
SeleniumConf Tokyo
19/04/2019
Boni García
boni.garcia@urjc.es http://bonigarcia.github.io/
@boni_gg https://github.com/bonigarcia
2. Boni García
• PhD in Information and Communications Technology from
Technical University of Madrid (UPM) in Spain. Dissertation
focused on software testing with Selenium
• Assistant Professor at King Juan Carlos University (URJC) in
Spain
• Open source software enthusiast. Creator and maintainer
of a number of projects: WebDriverManager, Selenium-
Jupiter, DualSub
• Author of more than 30 research papers in different
journals, magazines, international conferences, and the
book Mastering Software Testing with JUnit 5
4. WebDriverManager - Motivation
• Selenium WebDriver allows to control different types of
browsers (such as Chrome, Firefox, Opera, Edge, and so on)
programmatically using different programming languages
(Java, JavaScript, Python, C#, …)
• Browser is driven using native mechanism, so we need a
binary file (driver) in between the test using the WebDriver
API and the actual browser
6. WebDriverManager - Motivation
• Driver management is painful:
• Driver (chromedriver, geckodriver, etc.) must be downloaded
manually for the proper platform running the test (i.e. Windows,
Linux, Mac)
• Proper driver version must match the browser version
• Browser are constantly updated (and drivers too)
• Tests are not portable (different operative systems, path to driver)
8. WebDriverManager - Objective
• WebDriverManager is a Java library that allows to
automate the management of the binary drivers
(chromedriver, geckodriver, etc.) required by Selenium
WebDriver
WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.iedriver().setup();
WebDriverManager.phantomjs().setup();
https://github.com/bonigarcia/webdrivermanager
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.4.0</version>
<scope>test</scope>
</dependency>
dependencies {
testCompile("io.github.bonigarcia:webdrivermanager:3.4.0")
}
9. WebDriverManager - Objective
public class ChromeTest {
private WebDriver driver;
@BeforeClass
public static void setupClass() {
WebDriverManager.chromedriver().setup();
}
@Before
public void setupTest() {
driver = new ChromeDriver();
}
@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
}
public class ChromeTest {
private WebDriver driver;
@BeforeClass
public static void setupClass() {
WebDriverManager.firefoxdriver().setup();
}
@Before
public void setupTest() {
driver = new FirefoxDriver();
}
@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
}
10. WebDriverManager - Design
• WebDriverManager was first released on 21st March 2015
• In its earlier versions, WebDriverManager downloaded the
latest version of the driver by default
Check driver
latest version
Driver in
cache?
Download driver
Export driver path Driver
cache
no
Driver repository (online)
yes
setup()
11. WebDriverManager - Design
• Currently, WebDriverManager resolution algorithm is much richer
Check browser
version
Driver in
cache?
Download driver
Export driver path Driver
cache
no
Driver repository (online)
Internal
preferences
Recently
resolved?
Check driver
version
Versions
database
TTL
no
yes
yes
setup()
Versions database (online)
12. WebDriverManager - API
• WebDriverManager exposes a fluent API. For instance:
WebDriverManager.chromedriver().setup();
WebDriverManager.chromedriver().version("2.46").setup();
WebDriverManager.firefoxdriver().arch32().setup();
WebDriverManager.operadriver().forceDownload().setup();
WebDriverManager.phantomjs().avoidPreferences().setup();
WebDriverManager.edgedriver().proxy("server:port").setup();
Default usage for managing
chromedriver
Force a given version (2.46)
for chromedriver
Force 32-bit architecture for
geckodriver
Force the download of
operadriver
Avoid the use of preferences
for PhantomJS driver
Set proxy setup when
managing Edge driver
13. WebDriverManager - API
• More examples of the WebDriverManager API:
Method Description
version(String) Set a concrete version for the driver to be downloaded
targetPath(String) Change cache path (by default ~/.m2/repository/webdriver)
architecture(Architecture) Force a given architecture: 32-bits or 64-bits
operatingSystem(OperatingSystem) Force a given OS: WIN, LINUX, MAC
proxy(String) Use a HTTP proxy for the Internet connection
avoidPreferences() Avoid the use of Java preferences
driverRepositoryUrl(URL) Set a custom repository URL
timeout(int) Change connection timeout
browserPath() Set path for a given browser
ttl() Change time-to-live (by default 3600 seconds)
forceDownload() Force to download driver even if it exists in cache
https://github.com/bonigarcia/webdrivermanager
14. WebDriverManager - Configuration
• WebDriverManager is highly configurable with:
1. Environment variables. For example
2. Java properties. For example:
3. Configuration manager in Java. For example:
export WDM_TARGETPATH=~/.selenium
export WDM_CHROMEDRIVERVERSION=2.46
mvn test -Dwdm.targetPath=~/.selenium
gradle test -Dwdm.chromeDriverVersion=2.46
WebDriverManager.globalConfig().setTargetPath("~/.selenium");
WebDriverManager.chromedriver().version("2.46").setup();
15. WebDriverManager - Beyond Java
• WebDriverManager can be also used:
1. As CLI (command line interface) tool:
2. As server (using a REST-like API):
> java -jar webdrivermanager-3.4.0-fat.jar chrome
[INFO] Using WebDriverManager to resolve chrome
[INFO] Reading https://chromedriver.storage.googleapis.com/ to seek chromedriver
[INFO] Latest version of chromedriver is 2.37
[INFO] Downloading https://chromedriver.storage.googleapis.com/2.37/chromedriver_win32.zip
to folder D:projectswebdrivermanager
[INFO] Resulting binary D:projectswebdrivermanagertargetchromedriver.exe
> java -jar webdrivermanager-3.4.0-fat.jar server
[INFO] WebDriverManager server listening on port 4041
Examples of requests to WebDriverManager Server:
http://localhost:4041/firefoxdriver
http://localhost:4041/chromedriver?chromeDriverVersion=2.40
16. WebDriverManager - Conclusions
• WebDriverManager is a helper library for automating the
management of Selenium drivers (chromedriver, etc.)
17. WebDriverManager - Conclusions
• WebDriverManager is used in different projects in the Selenium
ecosystem. For instance:
• io.appium » java-client: https://github.com/appium/java-client
• com.codeborne » selenide: https://github.com/selenide/selenide
• WebDriverManager concept has been ported to other languages:
• webdriver-manager (Node.js): https://github.com/angular/webdriver-manager
• webdriver_manager (Python): https://github.com/jeffnyman/webdriver_manager
• WebDriverManager.Net (.Net): https://github.com/rosolko/WebDriverManager.Net
• Webdrivers Gem (Ruby): https://github.com/titusfortner/webdrivers
• WebDriverManager is in constant evolution. Its roadmap includes:
• Support Edge based on Chromium
• Using aspects (cross-cutting concerns) to resolve drivers automatically when
instantiating WebDriver objects
20. Selenium-Jupiter - Motivation
• JUnit 5 provides a brand-new
programming an extension model
called Jupiter
• Basic test are similar than in JUnit 4
and provide a wide range of new
features, such as:
• Enhanced parameterized tests
• Parallel execution
• Test ordering
• Kotlin support
• …
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class BasicJUnit5Test {
@BeforeAll
static void setupAll() {
// setup all tests
}
@BeforeEach
void setup() {
// setup each test
}
@Test
void test() {
// exercise and verify SUT
}
@AfterEach
void teardown() {
// teardown each test
}
@AfterAll
static void teardownAll() {
// teardown all tests
}
}
https://junit.org/junit5/docs/current/user-guide/
21. Selenium-Jupiter - Motivation
• The extension model of JUnit 5 allows to add custom features
to the programming model through extension points:
Very convenient
for Selenium!
1. Custom logic in the test
lifecycle
2. Dependency injection in test
methods and constructors
3. Test templates
4. Test conditional execution
22. Selenium-Jupiter - Objective
• Selenium-Jupiter is a JUnit 5 extension aimed to ease the
use of Selenium from Java tests
• Thanks to the Jupiter extension model, the required
boilerplate to use Selenium from JUnit 5 is minimum
• Moreover, it allows to use browser and Android devices in
Docker containers in a effortless manner
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>selenium-jupiter</artifactId>
<version>3.2.0</version>
<scope>test</scope>
</dependency>
dependencies {
testCompile("io.github.bonigarcia:selenium-jupiter:3.2.0")
}
https://github.com/bonigarcia/selenium-jupiter
23. Selenium-Jupiter - Local browsers
• Selenium-Jupiter uses the dependency injection mechanism
to instantiate/release WebDriver objects before/after tests
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import io.github.bonigarcia.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class ChromeAndFirefoxJupiterTest {
@Test
public void testWithOneChrome(ChromeDriver chromeDriver) {
// Use Chrome in this test
}
@Test
public void testWithFirefox(FirefoxDriver firefoxDriver) {
// Use Firefox in this test
}
@Test
public void testWithChromeAndFirefox(ChromeDriver chromeDriver,
FirefoxDriver firefoxDriver) {
// Use Chrome and Firefox in this test
}
}
We simply need to specify the type of browser to
be used, as test or constructor parameters:
• ChromeDriver
• FirefoxDriver
• OperaDriver
• SafariDriver
• EdgeDriver
• InternetExplorerDriver
• HtmlUnitDriver
• PhantomJSDriver
• AppiumDriver
Internally, Selenium-Jupiter uses
WebDriverManager to resolve properly the
required binary drivers to control local browsers
24. Selenium-Jupiter - Remote browsers
• Selenium-Jupiter provides
the annotation @DriverUrl
to locate the Selenium or
Appium server and
@DriverCapabilities to
specify the desired
capabilities
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import io.github.bonigarcia.DriverCapabilities;
import io.github.bonigarcia.DriverUrl;
import io.github.bonigarcia.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class SauceLabsJupiterTest {
@DriverUrl
String url = "https://ondemand.eu-central-1.saucelabs.com/wd/hub";
@DriverCapabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
{
capabilities.setCapability("username", "<my-saucelabs-user>");
capabilities.setCapability("accessKey", "<my-saucelabs-key>");
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("platform", "Windows 10");
capabilities.setCapability("version", "59.0");
capabilities.setCapability("name", "selenium-jupiter-and-saucelabs");
}
@Test
void testWithSaucelabs(RemoteWebDriver driver) {
// test
}
}
25. Selenium-Jupiter - Remote browsers
• Selenium-Jupiter provides
the annotation @DriverUrl
to locate the Selenium or
Appium server and
@DriverCapabilities to
specify the desired
capabilities
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
import io.github.bonigarcia.seljup.DriverCapabilities;
import io.github.bonigarcia.seljup.DriverUrl;
import io.github.bonigarcia.seljup.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class AppiumWithGlobalOptionsChromeJupiterTest {
@DriverUrl
String url = "http://localhost:4723/wd/hub";
@DriverCapabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
{
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("deviceName", "Samsung Galaxy S6");
}
@Test
void testWithAndroid(AppiumDriver<WebElement> driver) {
// test
}
}
26. Selenium-Jupiter - Dockerized browsers
• Selenium-Jupiter provides seamless integration with Docker
• The annotation @DockerBrowser is used to declare a dockerized
browsers. The supported browser are
• Chrome, Firefox, and Opera:
• Docker images for stable versions are maintained by Aerokube
• Beta and unstable (Chrome and Firefox) are maintained by ElasTest
• Edge and Internet Explorer:
• Due to license, these Docker images are not hosted in Docker Hub
• It can be built following a tutorial provided by Aerokube
• Android devices:
• Docker images for Android devices are maintained in the docker-android project (by Budi
Utomo)
27. Selenium-Jupiter - Dockerized browsers
• Browser in Docker containers example:
import static io.github.bonigarcia.BrowserType.CHROME;
import static io.github.bonigarcia.BrowserType.FIREFOX;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.remote.RemoteWebDriver;
import io.github.bonigarcia.DockerBrowser;
import io.github.bonigarcia.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class DockerChromeJupiterTest {
@Test
public void testChrome(@DockerBrowser(type = CHROME) RemoteWebDriver driver) {
// test
}
@Test
public void testChromeWithVersion(@DockerBrowser(type = FIREFOX, version = "66.0")
RemoteWebDriver driver) {
// test
}
}
Supported browser types are: CHROME,
FIREFOX, OPERA, y EDGE , IEXPLORER
and ANDROID
The parameter version admits the
following special values: latest,
latest-*, beta, y unstable
If version is not specified, the latest
stable will be used. For that, Selenium-
Jupiter internally connects to Docker
Hub to find out the latest version (ever
green Docker browser)
28. Selenium-Jupiter - Dockerized browsers
• Browsers in Docker containers can be used to create performance tests:
import static io.github.bonigarcia.BrowserType.CHROME;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.util.List;
import io.github.bonigarcia.DockerBrowser;
import io.github.bonigarcia.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class DockerChromeJupiterTest {
static final int NUM_BROWSERS = 10;
@Test
public void testPerformance(
@DockerBrowser(type = CHROME, size = NUM_BROWSERS) List<RemoteWebDriver> driverList) {
// test
}
} In this test, we will have 10
Chrome browsers ready to be
used by the test logic
29. Selenium-Jupiter - Dockerized browsers
• Android in Docker container example:
import static io.github.bonigarcia.BrowserType.ANDROID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.remote.RemoteWebDriver;
import io.github.bonigarcia.DockerBrowser;
import io.github.bonigarcia.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class DockerAndroidCustomJupiterTest {
@Test
public void testAndroid(@DockerBrowser(type = ANDROID, version = "8.1",
deviceName = "Nexus S") RemoteWebDriver driver) {
// test
}
} When using Android in Docker
containers, the type of device can
be specified
Android version API level Browser name
5.0.1 21 browser
5.1.1 22 browser
6.0 23 chrome
7.0 24 chrome
7.1.1 25 chrome
8.0 26 chrome
8.1 27 chrome
9.0 28 chrome
Type Device name
Phone Samsung Galaxy S6
Phone Nexus 4
Phone Nexus 5
Phone Nexus One
Phone Nexus S
Tablet Nexus 7
30. Selenium-Jupiter - Dockerized browsers
• When using Docker containers, it is possible to interact with the remote
session using VNC (and also recording these sessions)
31. Selenium-Jupiter - Test templates
• Selenium-Jupiter use the JUnit 5’s support for test templates
• A template defines the number and types of browser used by a test:
1. By means of a JSON file:
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.WebDriver;
import io.github.bonigarcia.SeleniumExtension;
@ExtendWith(SeleniumExtension.class)
public class TemplateTest {
@TestTemplate
void templateTest(WebDriver driver) {
// test
}
}
{
"browsers": [
[
{
"type": "chrome-in-docker",
"version": "latest"
}
],
[
{
"type": "chrome-in-docker",
"version": "latest-1"
}
],
[
{
"type": "chrome-in-docker",
"version": "beta"
}
],
[
{
"type": "chrome-in-docker",
"version": "unstable"
}
]
]
}
32. Selenium-Jupiter - Test templates
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.openqa.selenium.WebDriver;
import io.github.bonigarcia.BrowserBuilder;
import io.github.bonigarcia.BrowsersTemplate.Browser;
import io.github.bonigarcia.SeleniumExtension;
public class TemplateRegisterTest {
@RegisterExtension
static SeleniumExtension seleniumExtension = new SeleniumExtension();
@BeforeAll
static void setup() {
Browser chrome = BrowserBuilder.chrome().build();
Browser firefox = BrowserBuilder.firefox().build();
seleniumExtension.addBrowsers(chrome, firefox);
}
@TestTemplate
void templateTest(WebDriver driver) {
// ...
}
}
• Selenium-Jupiter use the JUnit 5’s support for test templates
• A template defines the number and types of browser used by a test:
2. Programmatically:
33. Selenium-Jupiter - Configuration
• Selenium-Jupiter is also highly configurable with:
1. Environment variables. For example
2. Java properties. For example:
3. Configuration manager in Java. For example:
export SEL_JUP_VNC=true
export SEL_JUP_RECORDING=true
mvn test –Dsel.jup.vnc=true
gradle test –Dsel.jup.vnc=true
@RegisterExtension
static SeleniumExtension seleniumExtension = new SeleniumExtension();
@BeforeAll
static void setup() {
seleniumExtension.getConfig().setVnc(true);
seleniumExtension.getConfig().setRecording(true);
}
34. Selenium-Jupiter - Beyond Java
• Selenium-Jupiter can be also used:
1. As CLI (command line interface) tool:
2. As server (using a REST-like API):
> java -jar selenium-jupiter-3.2.0-fat.jar chrome
[INFO] Using SeleniumJupiter to execute chrome (latest) in Docker
[INFO] Using CHROME version 73.0 (latest)
[INFO] Starting Docker container aerokube/selenoid:1.8.4
[DEBUG] Creating WebDriver for CHROME at http://172.17.0.1:32784/wd/hub
Jan 07, 2019 6:55:17 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
[INFO] Starting Docker container psharkey/novnc:3.3-t6
[INFO] Session id 8edd28c130bb2bc62f8e4467c20f4dc0
[INFO] VNC URL (copy and paste in a browser navigation bar to interact with remote session)
[INFO]
http://172.17.0.1:32785/vnc.html?host=172.17.0.1&port=32784&path=vnc/8edd28c130bb2bc62f8e44
67c20f4dc0&resize=scale&autoconnect=true&password=selenoid
[INFO] Press ENTER to exit
[INFO] Stopping Docker container aerokube/selenoid:1.8.4
[INFO] Stopping Docker container psharkey/novnc:3.3-t6
java -jar webdrivermanager-3.2.0-fat.jar server
[INFO] Selenium-Jupiter server listening on http://localhost:4042/wd/hub
Selenium-Jupiter becomes
a Selenium Server
Selenium-Jupiter allows to
control Docker browsers
through VNC
36. Selenium-Jupiter - Conclusions
• Selenium-Jupiter has much more features such as:
• Using WebDriver @Options in tests (e.g. ChromeOptions,
FirefoxOptions, etc.)
• Screenshots at the end of test (as PNG image or Base64)
• Integration with Jenkins (publishing test results in the Jenkins GUI)
• Integration with Genymotion (cloud provider for Android devices)
• Generic driver (configurable type of browser)
• Single session (reuse browser in different tests)
• Selenium-Jupiter is evolving in the near future. Its roadmap includes:
• Improve test template support (e.g. specifying options within the template)
• Improve scalability for performance tests (candidate technology: Kubernetes)
https://bonigarcia.github.io/selenium-jupiter/
37. Toolbox for Selenium Tests in
Java: WebDriverManager and
Selenium-Jupiter
Thank you very much!
Q&A
Boni García
boni.garcia@urjc.es http://bonigarcia.github.io/
@boni_gg https://github.com/bonigarcia