The document discusses the use of Nightwatch.js for automated testing at Tilt, a social crowdfunding company. It describes how Nightwatch provides features like page objects and custom commands/assertions that help organize tests. Page objects are used to abstract DOM selectors and common page interactions, handling differences between desktop and mobile. Custom commands create a domain-specific language, and assertions add specific validations. The document also explains challenges of server-side rendering, and how waits are sometimes needed for JavaScript to fully initialize before elements are functional.
Confused by testing terms and jargon? This talk walks through testing web applications, explaining the difference between unit testing and end to end testing. Several tools and concepts are also explored through a demo section.
Sample projects can be found at https://github.com/sethmcl/testing_web_applications.
Test any (yes, any) website using NightwatchJS - selenium based JavaScript test runner. We will cover
- prerequisites
- configuration
- writing tests
- reading reports
- continuous integration and services
Fullstack End-to-end test automation with Node.js, one year laterMek Srunyu Stittri
Airware's cloud automation team returns with a year’s worth of lessons learned, and will share the challenges involved with building a full-stack test automation framework with Node.js while using the latest and greatest in JavaScript tools.
Topics
Async / Await - an alternative to Webdriver’s built-in control flow. Limitations with control flow. Use Babel to write the latest ES6 JavaScript syntax. Custom reporter with screenshots from Sauce Labs. Parallel tests and accurate reporting.
Type-safe JavaScript with Facebook’s Flow-type library.
Robust visual diffs
Browser automation testing frameworks like Nightwatch.js allow developers to automatically test their web applications. Nightwatch.js provides an easy way to write tests using JavaScript. Tests can launch browsers, fill forms, click links, and verify outputs. Nightwatch.js tests can help developers catch errors that might break functionality and ensure compatibility across browsers. The documentation is good and it is actively maintained with over 10,000 downloads per month. Developers can integrate Nightwatch.js tests into their own projects to avoid future issues.
Node.js and Selenium Webdriver, a journey from the Java sideMek Srunyu Stittri
** Update **
There is now an updated version of this implementation with Javascript Async/Await
Recording - https://www.youtube.com/watch?v=BTpMB2-8qMM
Slides - https://www.slideshare.net/MekSrunyuStittri/endtoend-test-automation-with-nodejs-one-year-later
Abstract
With the growing popularity of NodeJS, many companies have embraced its adoption and gone full stack. The next logical move is to have the test framework be on the same stack. Unfortunately, proven ways of implementing a Selenium framework in JavaScript are very limited and very much fragmented.
Airware builds software and hardware for commercial drones; their cloud team ships code to production every week. In this talk, their cloud automation team will talk about: how they have built their Selenium framework with Node.js; the challenges of coming from a synchronous programming language like Java; lessons learned along this journey; and other technologies/tools used to complement testing their cloud and rolling out quality.
Recording by New Relic and SauceLabs - https://www.youtube.com/watch?v=CqeCUyoIEo8
Introductory overview of testing techniques for web application development. Explains where different testing methods fit in to the software development cycle.
Confused by testing terms and jargon? This talk walks through testing web applications, explaining the difference between unit testing and end to end testing. Several tools and concepts are also explored through a demo section.
Sample projects can be found at https://github.com/sethmcl/testing_web_applications.
Test any (yes, any) website using NightwatchJS - selenium based JavaScript test runner. We will cover
- prerequisites
- configuration
- writing tests
- reading reports
- continuous integration and services
Fullstack End-to-end test automation with Node.js, one year laterMek Srunyu Stittri
Airware's cloud automation team returns with a year’s worth of lessons learned, and will share the challenges involved with building a full-stack test automation framework with Node.js while using the latest and greatest in JavaScript tools.
Topics
Async / Await - an alternative to Webdriver’s built-in control flow. Limitations with control flow. Use Babel to write the latest ES6 JavaScript syntax. Custom reporter with screenshots from Sauce Labs. Parallel tests and accurate reporting.
Type-safe JavaScript with Facebook’s Flow-type library.
Robust visual diffs
Browser automation testing frameworks like Nightwatch.js allow developers to automatically test their web applications. Nightwatch.js provides an easy way to write tests using JavaScript. Tests can launch browsers, fill forms, click links, and verify outputs. Nightwatch.js tests can help developers catch errors that might break functionality and ensure compatibility across browsers. The documentation is good and it is actively maintained with over 10,000 downloads per month. Developers can integrate Nightwatch.js tests into their own projects to avoid future issues.
Node.js and Selenium Webdriver, a journey from the Java sideMek Srunyu Stittri
** Update **
There is now an updated version of this implementation with Javascript Async/Await
Recording - https://www.youtube.com/watch?v=BTpMB2-8qMM
Slides - https://www.slideshare.net/MekSrunyuStittri/endtoend-test-automation-with-nodejs-one-year-later
Abstract
With the growing popularity of NodeJS, many companies have embraced its adoption and gone full stack. The next logical move is to have the test framework be on the same stack. Unfortunately, proven ways of implementing a Selenium framework in JavaScript are very limited and very much fragmented.
Airware builds software and hardware for commercial drones; their cloud team ships code to production every week. In this talk, their cloud automation team will talk about: how they have built their Selenium framework with Node.js; the challenges of coming from a synchronous programming language like Java; lessons learned along this journey; and other technologies/tools used to complement testing their cloud and rolling out quality.
Recording by New Relic and SauceLabs - https://www.youtube.com/watch?v=CqeCUyoIEo8
Introductory overview of testing techniques for web application development. Explains where different testing methods fit in to the software development cycle.
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.jsMek Srunyu Stittri
Slide deck for ForwardJS 2017 in San Francisco - March 1st 2017
https://forwardjs.com/schedule#lecture-224
Airware builds hardware, software and cloud for commercial drones. We have transitioned to Node.js for cloud functional test automation in 2015. The purpose of this is to unite Fullstack developers and Automation engineers to speak in the same language which is JavaScript. With a year worth of lessons learnt, we will share the challenges involved with building a full-stack test automation framework with Node.js while using the latest and greatest in JavaScript tools.
An intro to nightwatch(a tool to create and run functional tests, e2e tests using selenium in the background) and examples of cases, also how to integrate nightwatch to a Continous Integration tool
The document discusses Nightwatch.js, an open source end-to-end testing framework for browser-based apps and websites. It uses Selenium WebDriver to perform commands and assertions on DOM elements. Key features include a clean syntax, built-in test runner, support for CSS/XPath selectors, test grouping/filtering, and CI integration. The document provides information on installation, project structure, configuration, writing tests, using page objects, test execution, and ways to extend Nightwatch's functionality through custom commands/assertions.
Andrew Eisenberg gives an overview of UI testing with Protractor. He discusses installing and running Protractor, writing basic tests, more complex test scenarios using page objects and promises, debugging tips, and considerations around when and how to use Protractor for UI testing AngularJS applications. While Protractor is a powerful tool, he notes it has limitations and maintenance costs, and manual testing may be better for unstable UIs and use cases in flux.
Session from GIDS 2014, showing how to do automated Web testing using a variety of JavaScript frameworks, including QUnit, Jasmine, Protractor, Selenium, and PhantomJS
Actually testing is as important as development and we all want to write code that works. So, why not test our front-end code?
To do that we can use some tools as Selenium, Jasmine but I will explain QUnit because it's used in Drupal8 testing.
QUnit is a powerful, easy-to-use JavaScript unit testing framework. It's used by the jQuery, jQuery UI, jQuery Mobile projects, also by Drupal, and is capable of testing any generic JavaScript code.
Session presented at Drupalcamp Gotemburg 2013 where I explained how to include QUnit testing in our Drupal projects.
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Codemotion
In this talk, I would like to speak about best practices for writing e2e tests with Protractor. The styleguide that I will introduce, is a joint initiative of mine and @andresdom from Google. Some of the subjects that will be covered include why e2e testing is important, what e2e tests should cover, naming conventions, selector strategies, page objects, helper objects and performance considerations. That and lots of smileys obviously, because we wanted to smiley all the things ...right? ¯\_(ツ)_/¯
Testing frontends with nightwatch & saucelabsTudor Barbu
Sooner or later, any application needs to be released. And before that, it needs to be tested. Ideally!
The purpose of this talk is to explore Nightwatch as a testing framework, how to set up an automated CI system using Travis and using SauceLabs as a browser farm.
See for code https://github.com/motanelu/bcn-js-news-widget
Unit testing and end-to-end (E2E) testing are important types of automated testing for JavaScript applications. Unit tests focus on testing individual functions or components in isolation to catch bugs, while E2E tests ensure that user flows work as expected by interacting with the application through a browser. The presentation discussed setting up testing frameworks like Karma and Jasmine for unit testing and Protractor for E2E testing. It also covered writing testable code, handling dependencies through dependency injection, and selecting elements and interacting with them during E2E tests.
So you've heard about Selenium, but what's it really all about? Maybe you've tried writing some tests, but soon found yourself frustrated trying to get them to work reliably. If you are interested in using this great tool to do integration testing for your websites and help automate your testing, this is the talk for you! We'll look at all the kinds of things you can do in Selenium, how to approach your testing, and use a live site as an example of building a complete suite of tests that will ensure clean, bug-free site updates.
This document provides an overview of Protractor, an end-to-end test framework for AngularJS applications. It discusses prerequisites for setting up Protractor, including installing Node.js and Java. Steps are outlined for configuring Protractor, writing a first test, and running tests. Code examples are also shown for interacting with Angular elements in tests using Protractor capabilities. The document aims to demonstrate the basics of Protractor through a simple todo application example and code snippets.
A set of slides that you can use to 'cheatsheet' your way to Selenium 2 WebDriver mastery. Formatted as the handouts I use on my Selenium WebDriver training.
This document discusses JavaScript testing using Selenium. It recommends using Selenium 2/WebDriver for JavaScript testing as it allows direct execution of JavaScript commands and assertions of results. The key aspects of JavaScript that should be tested are DOM manipulation, event handling, network calls, and JavaScript code/state. Client-side unit testing frameworks like QUnit can be used with Selenium to execute tests and assert results. Selenium 2 aims to provide a shared browser automation API that allows launching browsers quickly and navigating/executing tests across browsers and versions.
Automate testing with behat, selenium, phantom js and nightwatch.js (5)Faichi Solutions
This document discusses automated testing tools and frameworks for web applications. It provides an overview of Selenium WebDriver for automating tests across browsers, Behat and Mink for behavior-driven development in PHP, PhantomJS as a headless browser for running tests without a GUI, and Nightwatch.js as a Node.js-based solution for end-to-end testing using the WebDriver API. The document also compares manual vs automated testing and real browser vs headless testing.
Chrome Extensions are fun to build and very powerful, thanks to the expansive API Google provides. This talk will explore techniques for structuring and testing your extension projects, using tools such as Grunt, Browserify and Venus.js. A quick refresher of major extension development concepts will be also be reviewed.
APIs: A Better Alternative to Page ObjectsSauce Labs
APIs are proposed as an alternative to page objects for reducing repetition, improving maintenance and readability in tests. APIs abstract the test code away from the page structure by making calls to functions that interact with the system under test via its API. While APIs can improve tests, they require close cooperation from developers to implement and do not completely replace page objects due to upfront costs.
This document provides an overview of automated testing in AngularJS, including unit testing, end-to-end testing, and acceptance testing using tools like Protractor and CucumberJS. It discusses the benefits of automated testing such as enabling safe refactoring and reducing bugs. It then demonstrates how to set up testing frameworks like Protractor and Karma and write tests using page objects and test-driven development. The document also covers acceptance testing with CucumberJS by writing step definitions and features in Gherkin and linking them to tests.
Automation Abstraction Layers: Page Objects and BeyondAlan Richardson
An overview of different approaches to Page Objects and Domain Objects for GUI Automation. Examples use WebDriver and Java.
Full source code is available to download, For more details see the associated blog post.
Tilt does not currently employ any quality engineers. How can we deliver quality software? Over the last year the organization has gone from terrifying deploys (followed by
This document provides prayers for success, promotion, and excelling above others. It discusses seeking wisdom from God and examples from the Bible of people who excelled, such as Joseph and Daniel. Specific prayer points are provided to overcome hindrances and claim blessings, asking God for the anointing to excel in all areas of life. The purpose is to defeat any powers working against advancement and breakthrough.
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.jsMek Srunyu Stittri
Slide deck for ForwardJS 2017 in San Francisco - March 1st 2017
https://forwardjs.com/schedule#lecture-224
Airware builds hardware, software and cloud for commercial drones. We have transitioned to Node.js for cloud functional test automation in 2015. The purpose of this is to unite Fullstack developers and Automation engineers to speak in the same language which is JavaScript. With a year worth of lessons learnt, we will share the challenges involved with building a full-stack test automation framework with Node.js while using the latest and greatest in JavaScript tools.
An intro to nightwatch(a tool to create and run functional tests, e2e tests using selenium in the background) and examples of cases, also how to integrate nightwatch to a Continous Integration tool
The document discusses Nightwatch.js, an open source end-to-end testing framework for browser-based apps and websites. It uses Selenium WebDriver to perform commands and assertions on DOM elements. Key features include a clean syntax, built-in test runner, support for CSS/XPath selectors, test grouping/filtering, and CI integration. The document provides information on installation, project structure, configuration, writing tests, using page objects, test execution, and ways to extend Nightwatch's functionality through custom commands/assertions.
Andrew Eisenberg gives an overview of UI testing with Protractor. He discusses installing and running Protractor, writing basic tests, more complex test scenarios using page objects and promises, debugging tips, and considerations around when and how to use Protractor for UI testing AngularJS applications. While Protractor is a powerful tool, he notes it has limitations and maintenance costs, and manual testing may be better for unstable UIs and use cases in flux.
Session from GIDS 2014, showing how to do automated Web testing using a variety of JavaScript frameworks, including QUnit, Jasmine, Protractor, Selenium, and PhantomJS
Actually testing is as important as development and we all want to write code that works. So, why not test our front-end code?
To do that we can use some tools as Selenium, Jasmine but I will explain QUnit because it's used in Drupal8 testing.
QUnit is a powerful, easy-to-use JavaScript unit testing framework. It's used by the jQuery, jQuery UI, jQuery Mobile projects, also by Drupal, and is capable of testing any generic JavaScript code.
Session presented at Drupalcamp Gotemburg 2013 where I explained how to include QUnit testing in our Drupal projects.
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Codemotion
In this talk, I would like to speak about best practices for writing e2e tests with Protractor. The styleguide that I will introduce, is a joint initiative of mine and @andresdom from Google. Some of the subjects that will be covered include why e2e testing is important, what e2e tests should cover, naming conventions, selector strategies, page objects, helper objects and performance considerations. That and lots of smileys obviously, because we wanted to smiley all the things ...right? ¯\_(ツ)_/¯
Testing frontends with nightwatch & saucelabsTudor Barbu
Sooner or later, any application needs to be released. And before that, it needs to be tested. Ideally!
The purpose of this talk is to explore Nightwatch as a testing framework, how to set up an automated CI system using Travis and using SauceLabs as a browser farm.
See for code https://github.com/motanelu/bcn-js-news-widget
Unit testing and end-to-end (E2E) testing are important types of automated testing for JavaScript applications. Unit tests focus on testing individual functions or components in isolation to catch bugs, while E2E tests ensure that user flows work as expected by interacting with the application through a browser. The presentation discussed setting up testing frameworks like Karma and Jasmine for unit testing and Protractor for E2E testing. It also covered writing testable code, handling dependencies through dependency injection, and selecting elements and interacting with them during E2E tests.
So you've heard about Selenium, but what's it really all about? Maybe you've tried writing some tests, but soon found yourself frustrated trying to get them to work reliably. If you are interested in using this great tool to do integration testing for your websites and help automate your testing, this is the talk for you! We'll look at all the kinds of things you can do in Selenium, how to approach your testing, and use a live site as an example of building a complete suite of tests that will ensure clean, bug-free site updates.
This document provides an overview of Protractor, an end-to-end test framework for AngularJS applications. It discusses prerequisites for setting up Protractor, including installing Node.js and Java. Steps are outlined for configuring Protractor, writing a first test, and running tests. Code examples are also shown for interacting with Angular elements in tests using Protractor capabilities. The document aims to demonstrate the basics of Protractor through a simple todo application example and code snippets.
A set of slides that you can use to 'cheatsheet' your way to Selenium 2 WebDriver mastery. Formatted as the handouts I use on my Selenium WebDriver training.
This document discusses JavaScript testing using Selenium. It recommends using Selenium 2/WebDriver for JavaScript testing as it allows direct execution of JavaScript commands and assertions of results. The key aspects of JavaScript that should be tested are DOM manipulation, event handling, network calls, and JavaScript code/state. Client-side unit testing frameworks like QUnit can be used with Selenium to execute tests and assert results. Selenium 2 aims to provide a shared browser automation API that allows launching browsers quickly and navigating/executing tests across browsers and versions.
Automate testing with behat, selenium, phantom js and nightwatch.js (5)Faichi Solutions
This document discusses automated testing tools and frameworks for web applications. It provides an overview of Selenium WebDriver for automating tests across browsers, Behat and Mink for behavior-driven development in PHP, PhantomJS as a headless browser for running tests without a GUI, and Nightwatch.js as a Node.js-based solution for end-to-end testing using the WebDriver API. The document also compares manual vs automated testing and real browser vs headless testing.
Chrome Extensions are fun to build and very powerful, thanks to the expansive API Google provides. This talk will explore techniques for structuring and testing your extension projects, using tools such as Grunt, Browserify and Venus.js. A quick refresher of major extension development concepts will be also be reviewed.
APIs: A Better Alternative to Page ObjectsSauce Labs
APIs are proposed as an alternative to page objects for reducing repetition, improving maintenance and readability in tests. APIs abstract the test code away from the page structure by making calls to functions that interact with the system under test via its API. While APIs can improve tests, they require close cooperation from developers to implement and do not completely replace page objects due to upfront costs.
This document provides an overview of automated testing in AngularJS, including unit testing, end-to-end testing, and acceptance testing using tools like Protractor and CucumberJS. It discusses the benefits of automated testing such as enabling safe refactoring and reducing bugs. It then demonstrates how to set up testing frameworks like Protractor and Karma and write tests using page objects and test-driven development. The document also covers acceptance testing with CucumberJS by writing step definitions and features in Gherkin and linking them to tests.
Automation Abstraction Layers: Page Objects and BeyondAlan Richardson
An overview of different approaches to Page Objects and Domain Objects for GUI Automation. Examples use WebDriver and Java.
Full source code is available to download, For more details see the associated blog post.
Tilt does not currently employ any quality engineers. How can we deliver quality software? Over the last year the organization has gone from terrifying deploys (followed by
This document provides prayers for success, promotion, and excelling above others. It discusses seeking wisdom from God and examples from the Bible of people who excelled, such as Joseph and Daniel. Specific prayer points are provided to overcome hindrances and claim blessings, asking God for the anointing to excel in all areas of life. The purpose is to defeat any powers working against advancement and breakthrough.
DrupalCon Dublin 2016 - Automated browser testing with Nightwatch.jsVladimir Roudakov
Does your website run automated nightly tests and reports on what was changed or broken?
Is automated testing part of your daily routine or deployment process?
If not, then meet NightwatchJS: open source automated testing framework based on popular Selenium browser testing tool.
In this session we will cover
- basics of browser automated testing
- nightwatchJS scripts [no coding experience required!]
- writing tests for custom functionality
- headless browser setup on Linux
- alternative browser testing framework
Slides and video is available here: https://events.drupal.org/dublin2016/sessions/automated-browser-testing-nightwatchjs
Version 2.0.
This is an attempt by some colleagues and I to organize the recent explosion of Javascript based technologies and frameworks into a coherent toolkit to be used by a web application developer.
After some time discussing and studying some of the technologies we'd like to include in this toolkit, we realized that more important that the tool itself, is the motivation that is behind that tool
Nessa palestra contamos a experiência em evoluir um sistema de um grande cliente dos EUA da área de healthcare, que processa milhões de registros de produtos hospitalares. Partindo de um legado com base de dados caótica e códigos incompreensíveis, nossa responsabilidade foi aumentar a capacidade do sistema e ao mesmo tempo transformar sua arquitetura monolítica numa arquitetura com microservices – usando Domain-Driven Design, APIs REST, Java funcional e técnicas de Continuous Delivery.
Contamos essa experiência destacando os passos para refatorar uma arquitetura tradicional para Domain-Driven Design, os benefícios do DDD, e como se pode, com pequenos passos, organizar o código na direção de microservices. Mostramos os benefícios que microservices trouxeram nesse projeto e como ajudam a baixar custos. E investigamos benefícios para implementar um design funcional, incluindo prevenção de bugs, redução de inconsistências de estados e aumento de legibilidade de código.
Ao assistir essa palestra você irá enxergar como é possível migrar de um cenário caótico para um mais seguro e evolutivo – e também se inspirar em nossa experiência para aplicar mudanças nos seus sistemas legados.
This document provides an overview of fashion trends and the developing fashion industry in Nepal. It discusses the influence of international fashion designers and trends on Asian and Nepali fashion. It profiles some emerging Nepali fashion designers and models. It notes that while Nepal's fashion industry is still developing professionally, there is growing interest in fashion among young Nepalis. The industry faces challenges such as lack of infrastructure and skills but also opportunities to engage with global fashion if it can meet demands for timely and high quality production.
Анастасия Войтова: Здоровая психологическая атмосфера в жизни разработчика, ...Fwdays
-Как попробовать новые технологии в текущем проекте и не поломать всё?
-История-хоррор о том, как мы подписывали AppExtension и чуть не умерли в муках.
-Чем меряться, или какие командные метрики полезно собирать и анализировать.
-Клиент не понимает всю гениальность моего кода: что делать?
-и ещё немного о важности демо, весёлых коммит мессаджах и пасхалках внутри приложений
The document is a recruitment posting by Benchmark Mortgages seeking to hire "Super Brokers" to join their "League of Extraordinary Super Brokers". Benchmark is an innovative mortgage brokerage that offers competitive compensation, resources and support to help brokers succeed. They are looking for candidates with experience in banking/sales, strong communication skills, and a minimum of 2 years experience as a mortgage specialist or broker to help clients with their mortgage needs and provide excellent customer service.
Indie Music for the Indie Writer: A Productivity Playlist by Scribendi.com Scribendi
If you're a writer looking for focus or inspiration, Scribendi.com is here to help. We've compiled some of our favorite indie music to keep you company during those long hours of writing.
Romanticism was a reaction against neoclassicism and emphasized imagination, emotion, nature, and the individual experience. Key principles of Romanticism included expressing subjective reflections and feelings through lyric poetry, elevating nature over society, viewing society as corrupting, and seeing the romantic artist as a prophet. Wordsworth's poem "I Wandered Lonely as a Cloud" demonstrates romantic principles by depicting the speaker's personal experience of joy and inspiration in nature.
The document discusses several photography techniques including simplicity, the rule of thirds, lines, framing, and symmetry. It also lists six photo credits from Flickr taken between unspecified dates and accessed on March 3rd, 2015, crediting the photographers of images featuring a cat photobomb, an apple, San Francisco, a road, a soccer player, and a musician.
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
JavaScript is the language that powers the interactive web of the future. But as our web applications become larger and more complex, we begin to strain the old paradigm of throwing a bunch of JavaScript functions into a few files. Complex dependencies, tight coupling, and global state can turn our code into a huge plate of spaghetti. Though browsers do not natively support JavaScript modules, there are many tools that can help us to write clean, modular JavaScript.
In this session, we will explore the benefits of writing modular JavaScript. We will also take a deep dive into specific JavaScript module systems, such as Browserify, RequireJS, and the module standards that are coming in ES6.
The document discusses various methods for consuming web services using PHP, including REST, SOAP, and specific examples using Flickr, Delicious, and eBay APIs. REST uses HTTP requests and XML responses, while SOAP encapsulates requests and responses in XML for platform independence. Examples demonstrate using PHP with SimpleXML to parse REST responses, as well as the SOAP extension to call SOAP APIs and handle authentication.
The document discusses using PHPUnit for testing PHP code. It provides advantages of unit testing like catching bugs early and promoting code quality. It describes different types of tests like browser tests using Selenium and software tests checking PHP variables. It outlines the anatomy of test classes and functions, showing how to set up tests, target elements, make assertions. It also discusses how testing will work for the Baker project and Gearbox software, with shared testing resources and triggering tests through the admin center or continuous integration.
This document provides an overview of advanced workflow capabilities in Alfresco, including service tasks, listeners, and scripting. Service tasks allow Java code to be executed from a workflow using Java delegate classes, beans, or expressions. Listeners can react to workflow events using classes, beans or expressions. Scripting supports JavaScript execution using scope and execution variables. Timers can delay workflow start, intermediate, and boundary events using date, duration, or repeating formats.
Building Things Fast - and getting approvalSimon Willison
The document summarizes Simon Willison's talk at An Event Apart Chicago 2009 about building things fast using modern web development techniques and tools. The talk discusses trends in rapid interactive development using client-side JavaScript, web frameworks that facilitate quick prototyping and deployment, and building a Twitter client in under 50 lines of JavaScript code to demonstrate these techniques.
Service Worker allows web applications to work offline by intercepting network requests, caching responses, and serving cached responses when there is no network connection. It runs in the background and can handle events like fetch requests and push notifications. Key concepts include registering a service worker script, caching assets on install and user demand, and responding to fetch events by checking the cache first before making network requests. Common patterns are caching static resources on install, caching dynamic resources on each request, and migrating caches on activate. Service workers enable new capabilities like push notifications and progressive web apps.
The FamilySearch Reference Client is an open-source implementation of the Family Tree user interface that was developed to:
1) Make it easy for partners to access the FamilySearch tree using an extensible framework
2) Provide reusable components for partners to use
3) Demonstrate how to access the FamilySearch Tree using the Javascript SDK
The document discusses the importance of testing services and provides various strategies and tools for doing so effectively when developing software applications. It begins by defining what a service is and why testing services is important for building reliable applications. It then outlines challenges with testing external APIs and services that are beyond a developer's control. The document spends significant time exploring different approaches for stubbing or mocking external services in tests to avoid real network requests. These include built-in stubbing tools, services that provide pre-recorded responses, and technologies that can automatically record and replay API responses for future tests. It emphasizes the benefits of each approach and provides examples of implementing them. Finally, it discusses additional techniques for verifying tests that interact with external services.
1. Developing web applications has become increasingly complex over the years, requiring developers to choose frameworks, configure apps, and handle deployment.
2. Templates can help streamline development by providing pre-configured starting points for common stacks and handling boilerplate configuration.
3. Tools like Vagrant and Docker can help isolate development environments and more easily simulate production.
4. Frameworks like Brunch and Yeoman can automate frontend tasks like compilation, minification, and live reloading.
This document provides an introduction to Selenium, an open source tool for automating web application testing. Selenium allows testing of web applications across different browsers without needing to modify the source code. It works by issuing commands to browser drivers to simulate user interactions such as clicking links, filling forms, and verifying page content. The document outlines how to set up and run automated tests using the Selenium Ruby bindings and RSpec testing framework.
2017/01/23【F2E&RGBA Meetup】所分享的內容
簡介:
PWA (Progressive Web App) 是 Google 在 2015 年所提出的概念,2016 年我們開始看到許多 PWA 應用像是 The Washington Post、Flipkart、Gmail、AliExpress、Wikipedia、Flipboard、Booking 等實務案例,本次分享將介紹 PWA 與 HTML5 Offline API 搭配 Service Worker,讓我們的網站在離線的時候還能夠進行瀏覽,打造出更好的用戶體驗。
活動網址:
http://f2e.kktix.cc/events/f2e6-56d17c-0f9e5b-3997b7-a9203f-d684fd-886f38
RESTful API を Chalice で紐解く 〜 Python Serverless Microframework for AWS 〜崇之 清水
The document describes how to build serverless applications using the Chalice framework. It shows examples of defining routes, path parameters, HTTP methods, and response handling. It also demonstrates configuring features like CORS, API keys, and authorizers. The document explains how Chalice works behind the scenes by examining its core classes and how it matches incoming requests to route functions. It provides links to additional resources about serverless applications on AWS.
The Art of AngularJS in 2015 - Angular Summit 2015Matt Raible
Presentation from Angular Summit Keynote in September 2015. http://angularsummit.com/conference/boston/2015/09/session?id=34212
AngularJS is one of today's hottest JavaScript MVC Frameworks. In this session, we'll explore many concepts it brings to the world of client-side development: dependency injection, directives, filters, routing and two-way data binding. We'll also look at its recommended testing tools and build systems.
Deploying Next Gen Systems with Zero DowntimeTwilio Inc
The document discusses deploying next-generation systems at Twilio while ensuring zero downtime and zero regressions. It describes the challenges of replacing two core systems while maintaining high availability and horizontal scalability without losing any data. It outlines techniques used such as running tests against both systems, canary deployments, shadow mode with double bookkeeping for rollbacks, and gradual rollouts. The goal is reliable online upgrades of critical systems processing millions of transactions.
How to implement authorization in your backend with AWS IAMProvectus
AWS Dev Day Kyiv 2019
Track: Backend & Architecture
Session: ""How to implement authorization in your backend with AWS IAM""
Speaker: Stas Ivaschenko, AWS solutions architect at Provectus
Level: 400
Video: https://www.youtube.com/watch?v=4Jje_WJ4V7Q
AWS Dev Day is a free, full-day technical event where new developers will learn about some of the hottest topics in cloud computing, and experienced developers can dive deep on newer AWS services.
Provectus has organized AWS Dev Day Kyiv in close collaboration with Amazon Web Services: 800+ participants, 18 sessions, 3 tracks, a really AWSome Day!
Now, together with Zeo Alliance, we're building and nurturing AWS User Group Ukraine — join us on Facebook to stay updated about cloud technologies and AWS services: https://www.facebook.com/groups/AWSUserGroupUkraine
"
There are so many interesting ways to authenticate a user: via an API token, social login, a traditional HTML form or anything else you can dream up. But until now, creating a custom authentication system in Symfony has meant a lot of files and a lot of complexity. Introducing Guard: a simple, but expandable authentication system built on top of the security component and introduced in Symfony 2.8. Want to authenticate via an API token? Great - that's just one class. Social login? Easy! Have some crazy legacy central authentication system? In this talk, we'll show you how you'd implement any of these in your application today. Don't get me wrong - you'll still need to do some work. But finally, the path will be clear and joyful.
How to build Client Side Applications with WordPress and WP-API | #wcmiaRoy Sivan
This document discusses building client-side applications with WordPress and the WP-API. It introduces the presenter and explains why one would use WordPress for client-side apps. It then outlines the basic steps to get data from the WP-API and display it using templates on the client-side. Examples are provided of fully client-side WordPress sites and code samples are included. Resources for learning more are provided at the end.
This document discusses Service Workers and Progressive Web Apps (PWAs). It begins by introducing Service Workers and their benefits for creating instant and offline experiences. It then defines PWAs and discusses their key technologies like Manifest, Service Workers, and Push Notifications. Several real-world examples of popular PWAs are provided. Common Service Worker patterns and use cases are explained, such as precaching, caching on user demand, cache migration, and using Service Workers with Push Notifications. The document encourages developers to help build fast and reliable web experiences using these new web platform technologies.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
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.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
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
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
2. About Me
• NJ -> UIUC -> Penn State -> Blacksburg VA -> SF Bay Area
• Grad School -> WebDev -> DevOps Lead -> Frontend Lead
• Java -> Python -> JavaScript
• @tildedave
• Blog, etc: tildedave.com
San Francisco Selenium Meetup March 4th 2014
6. “Move Fast and Break
Things”
It turns out that this statement is a lie
San Francisco Selenium Meetup March 4th 2014
7. Golden Features
• Login
• Signup
• Contribution Flow
• Commenting
• Admin Payouts
• … really no user flow can ever break acceptably
San Francisco Selenium Meetup March 4th 2014
9. History of Selenium at Tilt
• CI/CD environment - push code to production daily
• No dedicated QA resources as part of the
development team
• Must not break core flows
San Francisco Selenium Meetup March 4th 2014
10. History of Selenium at Tilt
• Pre-History: PhantomJS/PhantomProxy - no visibility
on failures
• February 2013 - Introduce Selenium for functional
testing (2.31.0)
• June 2014 - Selenium tests vs staging/production as a
‘health check’ of deployed code (2.42.2)
San Francisco Selenium Meetup March 4th 2014
11. Ancient Code: Phantom JS
!
promiseIt('can contribute to regular campaign', function(p) {!
return p!
.withPrimedCampaign()!
.thenOpenCampaignPage()!
.thenLightboxClick('.campaign-tilt-info .btn')!
.thenType('#amount_lightbox', '2.00')!
.thenClickAndWaitForDocumentReady('#contribute-continue')!
.thenVerifyElementContents('#display-total', '2.05')!
.thenFillCCForm()!
.thenClickAndWaitAndFailIfLightboxCloses('#confirm-btn')!
.thenWait(1000)!
.thenVerifyElementVisible('#just_contributed')!
.thenCancelCampaign();!
});!
!
San Francisco Selenium Meetup March 4th 2014
12. Today: Nightwatch Tests
'Can contribute as admin': function(client) {!
var selectors = client.page.campaign().selectors;!
client.page.homepage().load()!
.createFBUserAndLogIn()!
.createCampaignAPI({}, function(campaign) {!
return client.page.campaign().load(campaign.title);!
})!
.page.campaign().clickContribute()!
.page.contributionFlow().enterContributionAmount('2')!
.page.contributionFlow().checkOut()!
.page.contributionFlow().skipInviteAndShare()!
// admins don't get asked to comment!
.verify.elementNotPresent(selectors.lightboxTitle)!
.end();!
}!
San Francisco Selenium Meetup March 4th 2014
13. Nightwatch at Tilt
• September 2014
• Selenium suite run on every branch before merge
• Lots of flapping tests - developers often rerun tests
until green
• Test suite expansion seems like a nightmare - lots of
selectors in tests, copy/pasted setup, etc
• October 2014 - We start investigating better solutions
San Francisco Selenium Meetup March 4th 2014
15. Nightwatch
• http://nightwatchjs.org/
• Better interface to selenium-webdriver
• Library provides Custom Commands, Page Objects,
and Assertions
• It’s in JavaScript!
San Francisco Selenium Meetup March 4th 2014
16. Why Nightwatch for Tilt?
• It’s in JavaScript
• Using Ruby just for tests is a hard sell
• Easily use npm modules as part of your tests
• Builds in important concepts that Tilt had rolled itself
(custom commands) or should have (page objects)
• Old suite had too much technical debt to be saved
San Francisco Selenium Meetup March 4th 2014
17. Tiltcabulary
• Users - users of the site
• Campaigns - crowdfunding campaigns
San Francisco Selenium Meetup March 4th 2014
19. Basic Nightwatch Test for
tilt.com
module.exports = {!
'Tilt.com': function(client) {!
var title = 'Collect money from your group';!
client!
.url('https://www.tilt.com')!
.waitForElementVisible('.hero-title', 1000)!
.verify.containsText('.hero-title',!
title)!
.end();!
}!
};!
San Francisco Selenium Meetup March 4th 2014
20. Basic Nightwatch Test for
tilt.com
module.exports = {!
'Tilt.com': function(client) {!
var title = 'Collect money from your group';!
client!
.url('https://www.tilt.com')!
.waitForElementVisible('.hero-title', 1000)!
.verify.containsText('.hero-title',!
title)!
.end();!
}!
};!
San Francisco Selenium Meetup March 4th 2014
Arrange
21. Basic Nightwatch Test for
tilt.com
module.exports = {!
'Tilt.com': function(client) {!
var title = 'Collect money from your group';!
client!
.url('https://www.tilt.com')!
.waitForElementVisible('.hero-title', 1000)!
.verify.containsText('.hero-title',!
title)!
.end();!
}!
};!
San Francisco Selenium Meetup March 4th 2014
Assert
22. Basic Nightwatch Test for
tilt.com
• We have a video on our homepage. Probably it
shouldn’t break.
San Francisco Selenium Meetup March 4th 2014
31. Basic Page Objects
module.exports = {!
!
'Tilt.com Video': function(client) {!
var title = 'Collect money from your group';!
client!
.url(‘https://www.tilt.com')!
.page.homepage().openVideo()!
.verify.elementPresent(!
client.page.homepage().selectors.video!
)!
.page.homepage().closeVideo()!
.end();!
}!
!
};!
San Francisco Selenium Meetup March 4th 2014
32. Basic Page Objects
module.exports = {!
!
'Tilt.com Video': function(client) {!
var title = 'Collect money from your group';!
client!
.url(‘https://www.tilt.com')!
.page.homepage().openVideo()!
.verify.elementPresent(!
client.page.homepage().selectors.video!
)!
.page.homepage().closeVideo()!
.end();!
}!
!
};!
San Francisco Selenium Meetup March 4th 2014
No selectors in tests
33. Basic Page Objects
module.exports = {!
!
'Tilt.com Video': function(client) {!
var title = 'Collect money from your group';!
client!
.url(‘https://www.tilt.com')!
.page.homepage().openVideo()!
.verify.elementPresent(!
client.page.homepage().selectors.video!
)!
.page.homepage().closeVideo()!
.end();!
}!
!
};!
San Francisco Selenium Meetup March 4th 2014
Waits common
to the page now inside
the page object
34. Why Nightwatch?
• Three features you would otherwise build yourself
• Page Objects
• Custom Commands
• Custom Assertions
San Francisco Selenium Meetup March 4th 2014
35. Page Objects
• Basic design pattern - abstract page behavior out of
selectors
• Add in common functions for interacting with page
• In our repo: abstract different desktop/mobile behavior
into the page object
San Francisco Selenium Meetup March 4th 2014
36. Page Object Example:
“Contribution Flow”
this.enterContributionAmount = function(amount) {!
var sels = (client.globals.isDesktop) ?!
selectors.desktop : selectors.mobile;!
return client!
.waitForElementVisible(sels.contributeAmountField,!
client.globals.timeout)!
.setValue(sels.contributeAmountField, amount)!
.pause(500)!
.click(seles.contributeStep1Submit)!
.waitForElementNotVisible(!
sels.contributeStep1Submit,!
client.globals.timeout!
);!
};!
San Francisco Selenium Meetup March 4th 2014
38. Page Objects: Desktop vs
Mobile
San Francisco Selenium Meetup March 4th 2014
Expiration is
two fields
Expiration is
one field
39. Page Objects: Desktop vs
Mobile
this.enterCreditCard = function(cardNumber, expirationMonth,!
expirationYear, cvc, zip) {!
var platformSelectors = (client.globals.isDesktop) ?!
selectors.desktop :!
selectors.mobile;!
var d = client!
.waitForElementVisible(platformSelectors.cardNumber,!
client.globals.timeout)!
.setValue(platformSelectors.cardNumber,!
[cardNumber, client.Keys.TAB]);!
if (client.globals.isDesktop) {!
d = d.setValue(platformSelectors.expiration,!
[expirationMonth + '/' + expirationYear,!
client.Keys.TAB]);!
} else {!
d = d!
.setValue(platformSelectors.expirationMonth, [expirationMonth,!
client.Keys.TAB])!
.setValue(platformSelectors.expirationYear, [expirationYear,!
client.Keys.TAB]);!
}!
return d!
.setValue(platformSelectors.cvc, [cvc, client.Keys.TAB])!
.setValue(platformSelectors.zip, [zip, client.Keys.TAB]);!
}!
San Francisco Selenium Meetup March 4th 2014
40. Custom Commands
• Build business-specific language for your tests
• Example commands from our repository:
• createEmailUser
• createEmailUserAndLogIn
• createFacebookTestUser
• setCountry
San Francisco Selenium Meetup March 4th 2014
41. Custom Assertions
• Add specific assertions to your tests
• We don’t use these as much - examples from our repo:
• isLoggedIn
• linkMatches(text, href)
• lightboxHasHeader
San Francisco Selenium Meetup March 4th 2014
43. Bootstrapping JavaScript
• Tilt runs on a hybrid stack
• Old code uses jQuery/jQuery UI for frontend widgets
• New code uses React
• Server-side rendering with a node.js service
San Francisco Selenium Meetup March 4th 2014
45. Opening the User Menu
San Francisco Selenium Meetup March 4th 2014
46. Opening the User Menu
this.openUserMenu = function(callback) {!
return client!
.waitForElementVisible(!
this.selectors.menuToggle,!
client.globals.timeout!
)!
// completely arbitrary wait time so that menu JS !
// initializes!
.pause(5000)!
.click(this.selectors.menuToggle)!
.waitForElementVisible('.user-menu', 1000, callback);!
};!
San Francisco Selenium Meetup March 4th 2014
47. Opening the User Menu
this.openUserMenu = function(callback) {!
return client!
.waitForElementVisible(!
this.selectors.menuToggle,!
client.globals.timeout!
)!
// completely arbitrary wait time so that menu JS !
// initializes!
.pause(5000)!
.click(this.selectors.menuToggle)!
.waitForElementVisible('.user-menu', 1000, callback);!
};!
San Francisco Selenium Meetup March 4th 2014
JavaScript must have
initialized before menu is
functional!
48. Old Code
window.rewireReact = function() {!
$('[data-mount-as]').each(function() {!
var $this = $(this),!
name = $this.attr('data-mount-as'),!
props = JSON.parse($this.attr('data-props'));!
!
$this.removeAttr('data-mount-as');!
!
// This causes event handlers on the component !
// to become functional!
var component = ReactComponents[name];!
React.render(React.createElement(component, props),!
$this.get(0));!
});!
};!
!
$(document).ready(window.rewireReact);
San Francisco Selenium Meetup March 4th 2014
49. Old Code
window.rewireReact = function() {!
$('[data-mount-as]').each(function() {!
var $this = $(this),!
name = $this.attr('data-mount-as'),!
props = JSON.parse($this.attr('data-props'));!
!
$this.removeAttr('data-mount-as');!
!
// This causes event handlers on the component !
// to become functional!
var component = ReactComponents[name];!
React.render(React.createElement(component, props),!
$this.get(0));!
});!
};!
!
$(document).ready(window.rewireReact);
Menus only functional
after document ready!
San Francisco Selenium Meetup March 4th 2014
50. New Code
<!-- Tilt JavaScript bundle -->!
<script src="https://d25y59nqso5bzg.cloudfront.net/built/home-
ce348751.js"></script>!
<!-- all JS is loaded, make the page functional -->!
<script type=“text/javascript”>window.rewireReact();</script>!
San Francisco Selenium Meetup March 4th 2014
51. New Code
<!-- Tilt JavaScript bundle -->!
<script src="https://d25y59nqso5bzg.cloudfront.net/built/home-
ce348751.js"></script>!
<!-- all JS is loaded, make the page functional -->!
<script type=“text/javascript”>window.rewireReact();</script>!
No more sticky menus!
San Francisco Selenium Meetup March 4th 2014
52. Test Suite Suggestions
in case you are green-fielding a new test suite
San Francisco Selenium Meetup March 4th 2014
53. Develop and run tests against
an integration environment
Staging, production, etc - not someone’s local box
San Francisco Selenium Meetup March 4th 2014
55. Run Tests Constantly
• We run our tests every 10 minutes against staging
• When you add a wait time to a test you have asserted
that your system always responds in that amount of
time
• See how tests behave in an integration environment
and adjust
San Francisco Selenium Meetup March 4th 2014
56. Happy Path Tests First
Sad path tests … eventually
San Francisco Selenium Meetup March 4th 2014
58. Page Objects…
• Don’t do test setup
• they don’t make users
• they don’t make campaigns
• Don’t orchestrate complex flows between pages
• Do one thing and one thing only
• (yes this puts more verbosity into your tests)
San Francisco Selenium Meetup March 4th 2014
59. Problems We’ve Had With
Nightwatch
your mileage may vary!
San Francisco Selenium Meetup March 4th 2014
60. Hard to run an individual test
Something like mocha —grep would be really great
(currently I just comment out tests)
San Francisco Selenium Meetup March 4th 2014
61. No Page Object
Documentation Yet
We had to dig through the repo to really understand how to use these
San Francisco Selenium Meetup March 4th 2014
62. Nondeterminstic Behavior
Page objects sometimes inherit a stale selenium session, repeating “stale element exception”
Use —verbose to see what’s happening if you are really stumped
San Francisco Selenium Meetup March 4th 2014
63. waitForElementVisible
failures
When running an individual test file, a waitForElementVisible failure causes all
the rest of the tests to be skipped
San Francisco Selenium Meetup March 4th 2014
64. Nightwatch Pull Requests I
Really Want Merged
• Distinguish between test failures and selenium errors
when taking screenshots: https://github.com/
beatfactor/nightwatch/pull/316
• Run individual test files in parallel with test workers
https://github.com/beatfactor/nightwatch/pull/317
San Francisco Selenium Meetup March 4th 2014
65. Next Steps for Nightwatch at
Tilt
• Replicate full functionality of old suite
• Cross-browser testing with Saucelabs
• Shard test suite (currently 2 jobs) into specific suites:
• Selenium-Nightwatch-Contribution, Selenium-
Nightwatch-Login, etc.
San Francisco Selenium Meetup March 4th 2014