This presentation is about the things I did to test the Tele2 React Native app with Appium. I'll explain the journey we've taken and some best practices which you can use with React Native and Appium
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Sargis Sargsyan
In this high technology times, it is really hard to catch up with everything. Especially for the mobile world when there are thousands of mobile devices with different modification of the Android OS. Most of us who work in the mobile testing industry familiar with the Appium framework for UI automation and also aware of complicate setup and hard maintenance of it. Using Docker in Android UI automation is making our life much easier. Docker-Android is a docker image built to be used for everything related to Android mobile website or application testing. All the tools needed (devices, framework, Android SDK, etc.) are packaged in the image. It is free and open-source and supports other features such as video recording. In this session, we will talk about the advantages and disadvantages of Appium and docker-android will go throw getting started with Docker-Android and run sample tests against it.
http://www.techforum.prathidhwani.org/appium/index.html
Appium Basics
Appium Desktop
Android Locator Types and Inspector Tools
Appium Capabilities
Mobile Interactions - Swipe and Scroll
Page Object Model and Dependency Injection
Real Device v/s Emulators / Simulators
iOS Automation
Cloud Automation
Appium Tips and Tricks
Please follow the steps in the below link to configure your system for the workshop
https://medium.com/@syamsasi/setting-up-appium-on-windows-and-ubuntu-ea9a73ab989
Hello Testers,
Welcome to the special edition of Vietnam QA meet up.
We have three speakers from Carousell on this special occasion.
1. Demystifying selenium grid - Syam Sasi, Senior Software Engineer , Carousell
2. The testing culture at Carousell - Ngan Do, Software Engineer , Carousell
3. The weekly release cycle for mobile apps - Long Ly, Senior Software Engineer , Carousell
Date : Thursday, May 30th, 2019
Time: 6:00 PM to 9:00 PM
Location: 23rd floor, E. Town Central, 11 Doan Van Bo, Ward 12, District 4 Ho Chi Minh City
Register link: https://www.eventbrite.sg/e/vietnam-qa-meetup-tickets-61865212516
The event is free and drinks with snacks will be served.
Please note that the event will be conducted in mainly English.
Detail Schedule:
6PM - 6:30PM - Pizzas, Fruits and networking
6:30 - 7:10 PM - Demystifying the selenium grid
7:10 - 7:15 - Q&A
7:15 - 7:45 - Testing culture at Carousell
7:45- 7:50 - Q&A
7:55 - 8:40 - Weekly release cycle for mobile apps
8:40 - 8:45 - Q&A
8:45 - 09:00 - Kahoot
The tools and practices refined over the last decade by web developers have not crossed over easily into the mobile community. Mobile devs have been without tools like continuous integration and automated testing, which enable delivery of high-quality apps more rapidly. A key piece of the solution for mobile is Appium, an open-source, cross-platform, language-agnostic mobile automation framework you can use to write automated UI tests for Android and iOS apps (native, hybrid, web), to be run on emulators or devices.
In this talk we will explore the philosophy that underlies the work behind Appium, including the open-source nature of Appium’s diverse, active and friendly community. Then, after a brief explanation of the technology that powers Appium, we’ll move into the technical portion of the talk, where attendees will see easy it is to write Appium scripts using the WebDriver protocol in their favorite language, and integrate Appium tests into a CI system using Selenium Grid or Sauce Labs.
Finally, we’ll look at some concrete examples of how Appium has been used in a large project with 20 Android Apps at Swiss Post to dramatically improve mobile QA. Ultimately, the talk provides an argument for moving from manual QA to automated testing, an understanding of the mobile automation landscape, and a solid introduction to Appium, which leading projects and companies around the world have chosen as their mobile automation framework of choice.
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Sargis Sargsyan
In this high technology times, it is really hard to catch up with everything. Especially for the mobile world when there are thousands of mobile devices with different modification of the Android OS. Most of us who work in the mobile testing industry familiar with the Appium framework for UI automation and also aware of complicate setup and hard maintenance of it. Using Docker in Android UI automation is making our life much easier. Docker-Android is a docker image built to be used for everything related to Android mobile website or application testing. All the tools needed (devices, framework, Android SDK, etc.) are packaged in the image. It is free and open-source and supports other features such as video recording. In this session, we will talk about the advantages and disadvantages of Appium and docker-android will go throw getting started with Docker-Android and run sample tests against it.
http://www.techforum.prathidhwani.org/appium/index.html
Appium Basics
Appium Desktop
Android Locator Types and Inspector Tools
Appium Capabilities
Mobile Interactions - Swipe and Scroll
Page Object Model and Dependency Injection
Real Device v/s Emulators / Simulators
iOS Automation
Cloud Automation
Appium Tips and Tricks
Please follow the steps in the below link to configure your system for the workshop
https://medium.com/@syamsasi/setting-up-appium-on-windows-and-ubuntu-ea9a73ab989
Hello Testers,
Welcome to the special edition of Vietnam QA meet up.
We have three speakers from Carousell on this special occasion.
1. Demystifying selenium grid - Syam Sasi, Senior Software Engineer , Carousell
2. The testing culture at Carousell - Ngan Do, Software Engineer , Carousell
3. The weekly release cycle for mobile apps - Long Ly, Senior Software Engineer , Carousell
Date : Thursday, May 30th, 2019
Time: 6:00 PM to 9:00 PM
Location: 23rd floor, E. Town Central, 11 Doan Van Bo, Ward 12, District 4 Ho Chi Minh City
Register link: https://www.eventbrite.sg/e/vietnam-qa-meetup-tickets-61865212516
The event is free and drinks with snacks will be served.
Please note that the event will be conducted in mainly English.
Detail Schedule:
6PM - 6:30PM - Pizzas, Fruits and networking
6:30 - 7:10 PM - Demystifying the selenium grid
7:10 - 7:15 - Q&A
7:15 - 7:45 - Testing culture at Carousell
7:45- 7:50 - Q&A
7:55 - 8:40 - Weekly release cycle for mobile apps
8:40 - 8:45 - Q&A
8:45 - 09:00 - Kahoot
The tools and practices refined over the last decade by web developers have not crossed over easily into the mobile community. Mobile devs have been without tools like continuous integration and automated testing, which enable delivery of high-quality apps more rapidly. A key piece of the solution for mobile is Appium, an open-source, cross-platform, language-agnostic mobile automation framework you can use to write automated UI tests for Android and iOS apps (native, hybrid, web), to be run on emulators or devices.
In this talk we will explore the philosophy that underlies the work behind Appium, including the open-source nature of Appium’s diverse, active and friendly community. Then, after a brief explanation of the technology that powers Appium, we’ll move into the technical portion of the talk, where attendees will see easy it is to write Appium scripts using the WebDriver protocol in their favorite language, and integrate Appium tests into a CI system using Selenium Grid or Sauce Labs.
Finally, we’ll look at some concrete examples of how Appium has been used in a large project with 20 Android Apps at Swiss Post to dramatically improve mobile QA. Ultimately, the talk provides an argument for moving from manual QA to automated testing, an understanding of the mobile automation landscape, and a solid introduction to Appium, which leading projects and companies around the world have chosen as their mobile automation framework of choice.
Finding the right test framework is the key for getting your automated process right. This slide-show is a list of a few automated UI test frameworks, each with its characteristics, for Android and iOS.
Appium Meetup #2 - Mobile Web Automation Introductionsnevesbarros
These were the slides for the second appium meetup held at the Gamesys in London, presented by Dan Cueller and Sergio Neves Barros
The demo project mentioned in the slides can be found here:
https://drive.google.com/file/d/0ByIdcWPvw1I3Ny1QWkJzZWpvbzA/view?usp=sharing
Testing Your Android and iOS Apps with Appium in Testdroid CloudBitbar
Testdroid Cloud is now fully supported with Appium, an open source test automation framework for use with native and hybrid mobile apps.
This slide deck was used on the presentation at Appium Meetup by Jouko Kaasila, Co-founder and COO at Bitbar. You will get an overview of how you can leverage Appium in your mobile app testing within Testdroid Cloud.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Different Android Test Automation Frameworks - What Works You the Best?Bitbar
Watch a live presentation at http://offer.bitbar.com/different-android-testing-frameworks-what-works-you-the-best
Implementing the test automation as part of your daily activities can provide you an enormous value: coverage to detect bugs and errors, early and later during the development, reducing the costs of failure, save time through its repeatability and earlier verification. Today, there are bunch of different options available for testing frameworks on Android – what would work the best for you?
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
[Devoxx Morocco 2015] Apache Cordova In ActionHazem Saleh
Apache Cordova is a platform for building native mobile apps using common Web technologies (HTML, CSS and JavaScript). Apache Cordova offers a set of APIs that allow the mobile app developers to utilize mobile native functions such as (Audio, Camera, Contacts …etc) using JavaScript. jQuery mobile is one of the best mobile web application frameworks, which allows the web developers to develop neat mobile web applications. This session discusses why there is a need for Hybrid mobile development, the current challenges of mobile development, and how using Apache Cordova can help in overcoming many of these technical challenges. It also highlights the best practices of using Apache Cordova with jQuery mobile. Finally, it demonstrates a real Cordova mobile app for showing the audience the best practices of designing, developing, and deploying hybrid Android and iOS mobile apps.
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Hazem Saleh
Apache Cordova is a platform for building native mobile applications using common Web technologies (HTML, CSS and JavaScript). Apache Cordova offers a set of APIs that allow the mobile application developers to access mobile native functions such as (Audio, Camera, File, Battery, Contacts …etc) using JavaScript. Although there are many JavaScript mobile application frameworks, jQuery mobile is one of the best mobile web application frameworks which allows the web developers to develop web applications that are mobile friendly. This session illustrates how to use Apache Cordova with the combination of jQuery mobile in order to develop a native Android hybrid application and deploy on a real Android device. The demo application (“Memo” application) utilizes mobile native functions (Audio and Camera) using pure JavaScript.
Get the session recording from SoundCloud:
http://tinyurl.com/cordova2014
Join Appium expert Jonathan Lipps and Perfecto as we take you through the latest Appium tips and tricks. Find out what’s new with Appium and learn advanced test automation best practices, including:
* Proper use of object identifiers
* Benefits of using deep links to avoid test flakiness
* Cross platform test automation best practices
* Leveraging Appium to test application upgrades
[Srijan Wednesday Webinars] Building a High Performance QA TeamSrijan Technologies
Speaker: Karim Fanadka, HPE Software
Session Slides: http://www.srijan.net/webinar/building-high-performance-qa-team/
Karim is a DevTest manager at HPE Software and his team is responsible for testing their new SaaS product, the StormRunner Load. In this webinar, Karim shares his experience of building a QA team that is agile, efficient, and uses the latest testing frameworks. He will also talk about continuous testing, automation, test based analytics and hotfixes.
Karim start's off the challenges in agile QA and then moves on to solving these challenges. The best part is when he shares the trick to delivering to production every 1.5 months, even for a high pressure enterprise product.
The Q/A session also brings out some very interesting topics, going into greater details and various suggestions that you can implement for your own QA teams.
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache CordovaHazem Saleh
Apache Cordova is a platform for building mobile applications using common Web technologies (HTML, CSS and JavaScript). Apache Cordova offers a set of APIs that allow the mobile application developers to access mobile native functions such as (Audio, Camera, File, Battery, Contacts ...) using JavaScript. Although there are many JavaScript mobile application frameworks, jQuery mobile is one of the best mobile web application frameworks which allows the web developers to develop neat mobile web apps. This session illustrates how to use Apache Cordova with the combination of jQuery mobile in order to design, develop, and deploy a complete hybrid Android (and iOS) app. The demo app utilizes the device native functions (Audio and Camera) using pure JavaScript.
Finding the right test framework is the key for getting your automated process right. This slide-show is a list of a few automated UI test frameworks, each with its characteristics, for Android and iOS.
Appium Meetup #2 - Mobile Web Automation Introductionsnevesbarros
These were the slides for the second appium meetup held at the Gamesys in London, presented by Dan Cueller and Sergio Neves Barros
The demo project mentioned in the slides can be found here:
https://drive.google.com/file/d/0ByIdcWPvw1I3Ny1QWkJzZWpvbzA/view?usp=sharing
Testing Your Android and iOS Apps with Appium in Testdroid CloudBitbar
Testdroid Cloud is now fully supported with Appium, an open source test automation framework for use with native and hybrid mobile apps.
This slide deck was used on the presentation at Appium Meetup by Jouko Kaasila, Co-founder and COO at Bitbar. You will get an overview of how you can leverage Appium in your mobile app testing within Testdroid Cloud.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
Different Android Test Automation Frameworks - What Works You the Best?Bitbar
Watch a live presentation at http://offer.bitbar.com/different-android-testing-frameworks-what-works-you-the-best
Implementing the test automation as part of your daily activities can provide you an enormous value: coverage to detect bugs and errors, early and later during the development, reducing the costs of failure, save time through its repeatability and earlier verification. Today, there are bunch of different options available for testing frameworks on Android – what would work the best for you?
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
[Devoxx Morocco 2015] Apache Cordova In ActionHazem Saleh
Apache Cordova is a platform for building native mobile apps using common Web technologies (HTML, CSS and JavaScript). Apache Cordova offers a set of APIs that allow the mobile app developers to utilize mobile native functions such as (Audio, Camera, Contacts …etc) using JavaScript. jQuery mobile is one of the best mobile web application frameworks, which allows the web developers to develop neat mobile web applications. This session discusses why there is a need for Hybrid mobile development, the current challenges of mobile development, and how using Apache Cordova can help in overcoming many of these technical challenges. It also highlights the best practices of using Apache Cordova with jQuery mobile. Finally, it demonstrates a real Cordova mobile app for showing the audience the best practices of designing, developing, and deploying hybrid Android and iOS mobile apps.
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Hazem Saleh
Apache Cordova is a platform for building native mobile applications using common Web technologies (HTML, CSS and JavaScript). Apache Cordova offers a set of APIs that allow the mobile application developers to access mobile native functions such as (Audio, Camera, File, Battery, Contacts …etc) using JavaScript. Although there are many JavaScript mobile application frameworks, jQuery mobile is one of the best mobile web application frameworks which allows the web developers to develop web applications that are mobile friendly. This session illustrates how to use Apache Cordova with the combination of jQuery mobile in order to develop a native Android hybrid application and deploy on a real Android device. The demo application (“Memo” application) utilizes mobile native functions (Audio and Camera) using pure JavaScript.
Get the session recording from SoundCloud:
http://tinyurl.com/cordova2014
Join Appium expert Jonathan Lipps and Perfecto as we take you through the latest Appium tips and tricks. Find out what’s new with Appium and learn advanced test automation best practices, including:
* Proper use of object identifiers
* Benefits of using deep links to avoid test flakiness
* Cross platform test automation best practices
* Leveraging Appium to test application upgrades
[Srijan Wednesday Webinars] Building a High Performance QA TeamSrijan Technologies
Speaker: Karim Fanadka, HPE Software
Session Slides: http://www.srijan.net/webinar/building-high-performance-qa-team/
Karim is a DevTest manager at HPE Software and his team is responsible for testing their new SaaS product, the StormRunner Load. In this webinar, Karim shares his experience of building a QA team that is agile, efficient, and uses the latest testing frameworks. He will also talk about continuous testing, automation, test based analytics and hotfixes.
Karim start's off the challenges in agile QA and then moves on to solving these challenges. The best part is when he shares the trick to delivering to production every 1.5 months, even for a high pressure enterprise product.
The Q/A session also brings out some very interesting topics, going into greater details and various suggestions that you can implement for your own QA teams.
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache CordovaHazem Saleh
Apache Cordova is a platform for building mobile applications using common Web technologies (HTML, CSS and JavaScript). Apache Cordova offers a set of APIs that allow the mobile application developers to access mobile native functions such as (Audio, Camera, File, Battery, Contacts ...) using JavaScript. Although there are many JavaScript mobile application frameworks, jQuery mobile is one of the best mobile web application frameworks which allows the web developers to develop neat mobile web apps. This session illustrates how to use Apache Cordova with the combination of jQuery mobile in order to design, develop, and deploy a complete hybrid Android (and iOS) app. The demo app utilizes the device native functions (Audio and Camera) using pure JavaScript.
Non Conventional Android Programming Enguest9bcef2f
Learn as you can developing software for mobile devices using only html, css and javascript and how you can use Spring Framework in software for mobile devices
Non Conventional Android Programming (English)Davide Cerbo
Learn as you can developing software for mobile devices using only html, css and javascript and how you can use Spring Framework in software for mobile devices
Building Isomorphic Apps (JSConf.Asia 2014)Spike Brehm
Over the past year or so, we’ve seen the emergence of a new way of building JavaScript web apps that share code between the web browser and the server, using Node.js — a technique that has come to be known as "isomorphic JavaScript.” There are a variety of use cases for isomorphic JavaScript; some apps render HTML on both the server and the client, some apps share just a few small bits of application logic, while others share the entire application runtime between client and server to provide advanced offline and realtime features. Why go isomorphic? The main benefits are performance, maintainability, reusability, and SEO.
This talk shares examples of isomorphic JavaScript apps running in the wild, explore the exploding ecosystem of asset building tools, such as Browserify, Webpack, and Gulp, that allow developers to build their own isomorphic JavaScript apps with open-source libraries, demonstrate how to build an isomorphic JavaScript module from scratch, and explore how libraries like React and Flux can be used to build a single-page app that renders on the server.
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...Andrey Karpov
One of the most relevant scenarios for using the PVS-Studio analyzer is its integration into CI systems. Even though a project analysis by PVS-Studio can already be embedded with just a few commands into almost any continuous integration system, we continue to make this process even more convenient. PVS-Studio now supports converting the analyzer output to the TeamCity format-TeamCity Inspections Type. Let's see how it works.
Slide Deck - Shift Left Beyond App Performance Improvement at Gojek_.pptxraditya gumay
Learning from the expert for handling shift left and app performance improvement for mobile applications.
Recently, mobile applications have had more complexity than backend applications. To tackle such complexity, I present an experience from the mobile expert to address issues around app performance.
How to implement camera recording for USB webcam or IP camera in C#.NETOzeki Informatics Ltd.
More info: www.camera-sdk.com
Source code: http://www.camera-sdk.com/p_123-video-tutorial-on-how-to-record-video-in-c-onvif.html
Welcome to this presentation that explains step-by-step how to develop video recording feature for your USB webcam and your IP camera / ONVIF IP camera in C#.NET to be able to capture and save the camera image. Good luck, have fun!
Seven Peaks Speaks - Compose Screenshot Testing Made EasySeven Peaks Speaks
🚨 Composable Future of Android Development - Compose Screenshot Testing Made Easy 🚨
Last but not least, our special speaker Tipatai Puthanukunkit, Junior Principal Engineer at Muvmi will describe tools and techniques for writing screenshot tests in Jetpack Compose. It will demonstrate an automatic screenshot generator and cover best practices for writing good composable code that simplifies the testing process
Introduction to Titanium and how to connect with a PHP backendJoseluis Laso
Introduction to Appcelerator Titanium with a full application developed and how to connect with a PHP backend (provided as well), all the sources are available in github.com/jlaso
Serverless Angular, Material, Firebase and Google Cloud applicationsLoiane Groner
Presented at DevFest Florida 2019 - January 19, Orlando, FL.
In this talk we'll learn how to use all the power of Google stack technologies (Angular, Material, Firebase and Google Cloud) to develop a full stack application. We'll learn how we can empower a serverless Angular + Material application with Firebase and reactive programming by using realtime database, Firestore, authentication (with different providers) and Firebase hosting. And we if need any other functionality, we can use Cloud Functions or a NodeJS app. This talk will demonstrate the overview of a real world application (40k users), along with CI configuration and some details of the code (the good parts!).
Creating a single page application is an iterative process, where we should aim for the "good enough" and continuously improve it based on the growing requirements. The current Frontend ecosystem gives us multiple tools that we can employ based on the use cases we might discover on the way. In this presentation, we explain our Vue adventure and development approach with this framework.
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Ontico
РИТ++ 2017, Frontend Сonf
Зал Мумбаи, 5 июня, 13:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2470.html
Паразитизм — форма взаимоотношений между организмами различных видов, из которых один (паразит — aka Angular 4+) использует другого (хозяина — aka React) в качестве среды обитания и источника питания, нанося ему вред, но при этом не убивая.
Паразитоид — организм, который проводит значительную часть своей жизни (в личиночной стадии), проживая на или внутри своего единственного хозяина, которого он постепенно убивает в процессе.
...
Similar to How React Native, Appium and me made each other shine @ContinuousDeliveryAmsterdam MeetUp 18-09-2019 (20)
Builda responsivetypescriptwebdriverio frameworkWim Selles
Participate in this workshop to learn how to put together the concepts of a WebdriverIO and TypeScript in a Mocha framework that is scalable, robust, easy to read. We will be sharing our real-time experience of how we migrated our testing approach, design and framework when our application was migrating from javascript to a typescript architecture.
You will leave with your very own example automation framework that demonstrates advanced principles of WebdriverIO using TypeScript automation design. We will integrate with allure reporting.
Node.JS: Do you know the dependency of your dependencies dependencyWim Selles
A lot of (QA) people are using JavaScript frameworks nowadays, but not everybody knows and understands how the Node.JS ecosystem works. During this talk I'll explain:
- How NodeJS works
- Why you should use NVM instead of a pure NodeJS installation
- The package versioning
- The remark about "there's a package for that"
- How the package-lock.json works
- And many more
Building Your Own Native App Visual Testing Module with AppiumWim Selles
We all know that Appium can do (almost) everything you tell it to do, but in the end we always ask it to do the same thing: to automate our happy and/or our error flow. The result can give us the confirmation that the user can still buy a product, or verify if his bank account still has a positive balance.
But what if we need to know more than that: what if we also need to verify the layout of our app? The answer would be easy, as there are plenty of open-source or paid solutions that can help you with that. However, almost all of these solutions focus on web/hybrid apps, not on native iOS and or Android apps.
Wim faced this challenge when he was automating a React Native app for a customer. There was no image comparison tool that could do what he wanted it to do, so he rolled up his sleeves and started building one. In this talk, Wim will walk down the path he took and he will explain:
- Why he used ResembleJS as a core visual comparison solution
- The things he learned about Appium in the process (pro tips!)
- The differences between iOS and Android and how he managed to solve this in one cross-platform solution
- The pros and cons of the solution
Building Your Own Native App Visual Testing Module with AppiumWim Selles
We all know that Appium can do (almost) everything you tell it to do, but in the end we always ask it to do the same thing: to automate our happy and/or our error flow. The result can give us the confirmation that the user can still buy a product, or verify if his bank account still has a positive balance.
But what if we need to know more than that: what if we also need to verify the layout of our app? The answer would be easy, as there are plenty of open-source or paid solutions that can help you with that. However, almost all of these solutions focus on web/hybrid apps, not on native iOS and or Android apps.
Wim faced this challenge when he was automating a React Native app for a customer. There was no image comparison tool that could do what he wanted it to do, so he rolled up his sleeves and started building one. In this talk, Wim will walk down the path he took and he will explain:
- Why he used ResembleJS as a core visual comparison solution
- The things he learned about Appium in the process (pro tips!)
- The differences between iOS and Android and how he managed to solve this in one cross-platform solution
- The pros and cons of the solution
These are the slides used during the workshop TESTING BEYOND THE DEFAULT CLICK-PATHS on the 11th of May 2018 in Cluj-Napoca, Romania during the Romanian Testing Conference 2018.
Why the h# should I use Appium with React NativeWim Selles
Currently there are a lot of testautomation frameworks that can help you automate your native app, but how do you pick the right one?
In the talk I gave at AppiumConf2018 in London I showed how my journey for selecting the best tool for testing Tele2's new React Native app for iOS and Android went. We take a look at the selected teststrategy and walked down the bumpy road I needed to take to get the automation on the quality level it is now.
0x01 - Newton's Third Law: Static vs. Dynamic AbusersOWASP Beja
f you offer a service on the web, odds are that someone will abuse it. Be it an API, a SaaS, a PaaS, or even a static website, someone somewhere will try to figure out a way to use it to their own needs. In this talk we'll compare measures that are effective against static attackers and how to battle a dynamic attacker who adapts to your counter-measures.
About the Speaker
===============
Diogo Sousa, Engineering Manager @ Canonical
An opinionated individual with an interest in cryptography and its intersection with secure software development.
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Orkestra
UIIN Conference, Madrid, 27-29 May 2024
James Wilson, Orkestra and Deusto Business School
Emily Wise, Lund University
Madeline Smith, The Glasgow School of Art
Have you ever wondered how search works while visiting an e-commerce site, internal website, or searching through other types of online resources? Look no further than this informative session on the ways that taxonomies help end-users navigate the internet! Hear from taxonomists and other information professionals who have first-hand experience creating and working with taxonomies that aid in navigation, search, and discovery across a range of disciplines.
Acorn Recovery: Restore IT infra within minutesIP ServerOne
Introducing Acorn Recovery as a Service, a simple, fast, and secure managed disaster recovery (DRaaS) by IP ServerOne. A DR solution that helps restore your IT infra within minutes.
This presentation by Morris Kleiner (University of Minnesota), was made during the discussion “Competition and Regulation in Professions and Occupations” held at the Working Party No. 2 on Competition and Regulation on 10 June 2024. More papers and presentations on the topic can be found out at oe.cd/crps.
This presentation was uploaded with the author’s consent.
10. Testproperties
/**
* If we have a test build, add a unique test id for iOS and Android
*
* @param {string} id
*
* @return {object|*}
*/
function testProperties(id) {
if (IS_AUTOMATION_BUILD) {
return {
accessibilityLabel: `test-${id}`,
};
}
return null;
}
11. Implementation
import React, { Component } from 'react';
import { View } from ‘react-native';
import { testProperties } from './config/automation/TestProperties';
class MultipleChoice extends Component {
// Some code
render() {
const { options } = this.props;
return (
<View
style={styles.container}
{…testProperties('Select menu')}
>
// The select implementation
</View>
);
}
}
23. Animations
onBoarding
Each bubble takes 500 ms to show
Min 15 bubbles => 7,5 sec
Max 25 bubbles => 12,5 sec
Bubble delay is 800 ms
Between 19 (15*800+7,5) and 32 sec (25*800+12,5) animations
What?!
24. Remove animations
import { AppRegistry } from 'react-native';
import App from './app/App';
import { setupAutomation } from './app/config/automation/TestProperties';
// Run the automation setup
setupAutomation();
AppRegistry.registerComponent('Tele2CustomerApp', () => App);
25. Remove animations
const stubs = require('stubs');
/**
* Setup the app for a specific automation build
*/
function setupAutomation() {
if (!IS_AUTOMATION_BUILD) {
return;
}
// Disable the yellow box
console.disableYellowBox = true;
disableAnimations();
}
/**
* Disable all animations
*/
function disableAnimations() {
const AnimatedTiming = Animated.timing;
stubs(Animated, 'timing', (...props) => {
props[1].duration = 0;
props[1].delay = 0;
return AnimatedTiming(...props);
});
}
27. Remove animations
const stubs = require('stubs');
/**
* Setup the app for a specific automation build
*/
function setupAutomation() {
if (!IS_AUTOMATION_BUILD) {
return;
}
// Disable the yellow box
console.disableYellowBox = true;
disableAnimations();
}
/**
* Disable all animations
*/
function disableAnimations() {
const AnimatedTiming = Animated.timing;
stubs(Animated, 'timing', (...props) => {
props[1].duration = 0;
props[1].delay = 0;
return AnimatedTiming(...props);
});
}
28. Animations
onBoarding
Each bubble takes 500 ms to show
Min 15 bubbles => 7,5 sec
Max 25 bubbles => 12,5 sec
Bubble delay is 800 ms
Between 19 (15*800+7,5) and 32 sec (25*800+12,5) animations
What?!
30. Test strategy
Real devices
Platforms: iOS && Android
Devices: High- && Mid- && Budget-range
Platform tests: High && mid risk, proof only once
All device tests: High risk, test on all
With CucumberJS Tags
How?
31. CucumBerJS tags
Feature: View invoices
Background: Open account settings
Given I launch the new awesome Tele2 app
@os-specific
Scenario: As an user I want to see my not paid and paid bills
Given I'm logged in to open my invoices
Then I would like to see my unpaid bills
| text |
| Januari 2018 € 359,02 Deze factuur wordt op 01 februari afgeschreven. |
And I would like to see my paid bills
| text |
| December 2017 € 66,12 |
| November 2017 € 112,12 |
Scenario: As an user I want to be able to download or share my invoice
Given I'm logged in to open my invoices
When I select the first invoice
Then I would see the PDF of the invoice
When I press the download button
Then the download and share options are shown
32. CucumBerJS tags
Feature: Onboarding
Background: Open the app
Given I launch the new awesome Tele2 app
And I want to start with the onboarding
@all-devices
Scenario: As a customer I want to onboard with an existing MijnTele2 account
When I select Jazeker!
And I submit my credentials in the login form
Then the pincode bubble would be visible
When I submit valid pincodes
And I agree with the terms and conditions
Then I am redirected the home screen
33. Test strategy
Real devices
Platforms: iOS && Android
Devices: High- && Mid- && Budget-range
Extensive tests: High && mid risk, proof only once
Default tests: Hi risk, test on all
With CucumberJS Tags
How?
44. Parallel execution
Not
… each scenario on each (
… all (( have the same ⚡
… all (( start with same scenario at same ⏱
… same API response on all ((
Prevent
53. /**
* This is a part from our `TestProperties`-file.
*/
import { getUniqueID } from 'react-native-device-info';
/**
* If it is an automation build, then add a new header for the API calls
*
* @return {Object}
*
* For iOS it will return something like: FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9
* For Android it will return something like: dd96dec43fb81c97
*/
function uniqueAutomationApiHeaderId() {
if (IS_AUTOMATION_BUILD) {
return {
ngapimockid: getUniqueID(),
};
}
return {};
}
app method
54. /**
* This is the config-file we use for calling all the API’s.
* Below you will see a part of the config to attach the headers
* to all API calls
*/
import { uniqueAutomationApiHeaderId } from './automation/TestProperties';
const apiConfig = create({
baseURL: BASE_URL,
headers: {
...API_HEADERS,
...uniqueAutomationApiHeaderId(),
},
});
Header
56. /**
* Executes the api call with the provided information.
*
* @param {string} httpMethod PUT|DELETE|POST|GET
* @param {string} urlSuffix Which path to httpMethod the data to
* @param {Object} options The data that needs to be httpMethod
* @param {string} errorMessage The error that needs to be shown
*
* @return {Promise} The promise.
*
* @private
*/
function execute(httpMethod, urlSuffix, options, errorMessage) {
const data = {
headers: {
'Content-Type': 'application/json',
ngapimockid: device.uniqueID,
},
method: httpMethod,
};
if (options !== undefined) {
data.body = JSON.stringify(options);
}
return handleRequest(urlSuffix, data, errorMessage);
}
Set state
headers: {
'Content-Type': ‘application/json’,
ngapimockid: '51A82F08-CCAC-410F'
},
method: 'PUT',
body: {
identifier: 'token',
scenario: 'unauthorised'
}
58. Parallel execution
Not
… each scenario on each (
… all (( have the same ⚡
… all (( start with same scenario at same ⏱
… same API response on all ((
Prevent
61. time
per scenario
Mocking: ~4 API calls (4 x 2 sec.) ~ 8 sec.
Animations: ~ 9 sec.
Deeplinking/Testlinkscreen: ~15 sec.
Currently 65 scenario’s
Average savings
62. time
per scenario
Mocking: ~4 API calls (4 x 2 sec.) ~ 8 sec.
Animations: ~ 9 sec.
Deeplinking/Testlinkscreen: ~15 sec.
Currently 65 scenario’s
Average savings
Ooooops!
Something went wrong!
You just saved more than
30 min
on total execution time!
Please revert! Proceed!
63. time
per scenario
Mocking: ~4 API calls (4 x 2 sec.) ~ 8 sec.
Animations: ~ 9 sec.
Deeplinking/Testlinkscreen: ~15 sec.
Currently 65 scenario’s
Average savings
!!
Ooooops!
Something went wrong again!
Execution time on 4 parallel devices
in the cloud is only
15% higher
in comparison to local execution time
on 1 device. We expected more!
Please revert! Proceed!
64. time
per scenario
Mocking: ~4 API calls (4 x 2 sec.) ~ 8 sec.
Animations: ~ 9 sec.
Deeplinking/Testlinkscreen: ~15 sec.
Currently 65 scenario’s
Average savings
67. How?
Automate comparing images
Core:
• Comparison:
• ResembleJS (https://github.com/HuddleEng/Resemble.js)
• Logic:
• WebdriverIO element selection
• Appium understanding (UI-hierarchy)
• Experience from the past with my protractor-image-comparison module
68. HOW-2-USE
// wdio.conf.js
exports.config = {
// ...
plugins: {
'wdio-native-app-compare': {
baselineFolder: '.dist/image-compare/baseline',
screenshotPath: '.dist/image-compare/screenshots',
// See Options for more options
// ..
},
},
// ...
};
69. HOW-2-USE
/**
* Save element
*/
// Default
device.saveElement(device.element('~your-accessibility-id'), 'name-of-your-file');
// Shorthand
device.saveElement($('~your-accessibility-id'), 'name-of-your-file');
/**
* Save screen
*/
device.saveScreen(‘name-of-your-file');
79. Pro’s and cons
Pro’s
Increase quality
Speed up development
Test what really needs to be tested
Speed up execution time
Cons
No real services tested (automated)
App is not a production app
Developers often debug app for seeing
no animations.
(use the wrong build 0)
82. I hope we have some time left, so are there any
questions?
83. Can you show everybody my contact details?
I hope we have some time left, so are there any
questions?
Thank you very much!
Sure!
Contact
1: Wim Selles - Sr. Solutions Architect
2: Sauce Labs
3: @wswebcreation
4: wswebcreation.nl
4: gitHub.com/wswebcreation
5 Goodbye! 5