This document describes an alternative to the Selenide web test automation tool called Selenide Alternative. It discusses lessons learned from implementing the alternative tool, including using a more concise API, implicit waits, assertion waits, and handling dynamic elements. The alternative aims to improve on Selenide by using object-oriented programming, modular design, and lazy proxy elements to dynamically find and wait for elements.
Slides from "Polyglot Automation" talk given at QA Fest conference.
There are many good programming languages. But test automation is preety simple so the power of language will not matter. But choosing language does matter for effective automation. How to choose the language for Web UI automation? Why Web UI automation is easy? How to choose easyy tools for your automation? How to learn new language and why? We will try to answer all these questions in this talk.
Selenide is simple and powerful in use wrapper-library over Selenium. But what the point just of shorter lines of code? In this talk we will see how to tame your webui mustang with Selenide and put it into fence of simple BDD stories with Easyb. We also consider pros and cons of the approach and compare to available alternatives.
- Why Selenide for Web UI Automation
- Demo on how to implement your own Selenide in Python (link to video (in Russian) and github sources attached)
- Benefits and Comparison to other approaches
This talk was given at "The KISS Method and PageObjects" meetup (https://goo.gl/2DBuxj).
The talk is about KISS (Keep It Simple Stupid) principle applied to PageObjects design with a comparison to other more classic approaches.
The slides contain both Selenium Webdriver and Selenide examples.
src code for the talk: https://github.com/yashaka/talks/tree/master/kiss-pageobjects
This talk was given at "Easy Automation in Python" meetup (https://www.meetup.com/Test-Fanatic-MeetUp/events/236481850/).
The talk is about some easy approaches in building web ui automation in python.
As an "easy tool" the selene library is uses.
src code for the talk: https://github.com/yashaka/talks/tree/master/easy-automation-py
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Iakiv Kramarenko
Talk given on SeleniumCamp 2016 about:
- What features should a "general web test automation tool" have
- Why Selenide is the one Java
- And Selene is the other in Python
- And how to use the latter
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
***VIDEO***: view in SD at http://youtu.be/HPHKeBakulQ or download in HD at http://bit.ly/1nyvA67
Often we have lack of automation resources. If we just would involve less experienced juniors to implement test model and even Manual QA to write DSL like tests…
In this talk I want to present the simplified approach to write PageObjects for your test model as it would be like playing “three chords” song on a guitar. And also share the experience of pacifying the LoadableComponent pattern, rather hard in implementation but making your tests much more DRY and easy to use in context of loading pages.
Web ui tests examples with selenide, nselene, selene & capybaraIakiv Kramarenko
Code Examples Cut from Polyglot Automation talk given at QA Fest
full video: https://www.youtube.com/watch?v=D4w8btYlbRY
full presentation: http://www.slideshare.net/yashaka/polyglot-automation-qa-fest-2015
Slides from "Polyglot Automation" talk given at QA Fest conference.
There are many good programming languages. But test automation is preety simple so the power of language will not matter. But choosing language does matter for effective automation. How to choose the language for Web UI automation? Why Web UI automation is easy? How to choose easyy tools for your automation? How to learn new language and why? We will try to answer all these questions in this talk.
Selenide is simple and powerful in use wrapper-library over Selenium. But what the point just of shorter lines of code? In this talk we will see how to tame your webui mustang with Selenide and put it into fence of simple BDD stories with Easyb. We also consider pros and cons of the approach and compare to available alternatives.
- Why Selenide for Web UI Automation
- Demo on how to implement your own Selenide in Python (link to video (in Russian) and github sources attached)
- Benefits and Comparison to other approaches
This talk was given at "The KISS Method and PageObjects" meetup (https://goo.gl/2DBuxj).
The talk is about KISS (Keep It Simple Stupid) principle applied to PageObjects design with a comparison to other more classic approaches.
The slides contain both Selenium Webdriver and Selenide examples.
src code for the talk: https://github.com/yashaka/talks/tree/master/kiss-pageobjects
This talk was given at "Easy Automation in Python" meetup (https://www.meetup.com/Test-Fanatic-MeetUp/events/236481850/).
The talk is about some easy approaches in building web ui automation in python.
As an "easy tool" the selene library is uses.
src code for the talk: https://github.com/yashaka/talks/tree/master/easy-automation-py
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Iakiv Kramarenko
Talk given on SeleniumCamp 2016 about:
- What features should a "general web test automation tool" have
- Why Selenide is the one Java
- And Selene is the other in Python
- And how to use the latter
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
***VIDEO***: view in SD at http://youtu.be/HPHKeBakulQ or download in HD at http://bit.ly/1nyvA67
Often we have lack of automation resources. If we just would involve less experienced juniors to implement test model and even Manual QA to write DSL like tests…
In this talk I want to present the simplified approach to write PageObjects for your test model as it would be like playing “three chords” song on a guitar. And also share the experience of pacifying the LoadableComponent pattern, rather hard in implementation but making your tests much more DRY and easy to use in context of loading pages.
Web ui tests examples with selenide, nselene, selene & capybaraIakiv Kramarenko
Code Examples Cut from Polyglot Automation talk given at QA Fest
full video: https://www.youtube.com/watch?v=D4w8btYlbRY
full presentation: http://www.slideshare.net/yashaka/polyglot-automation-qa-fest-2015
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.
These are the slides for the talk given at https://www.meetup.com/South-Florida-Software-Testing/events/233980212
Short summary:
KISS (Keep It Simple Stupid) techniques and practices in Web UI Automation on topics:
- selenium webdriver vs wrappers
- XPath vs CSS Selectors + Selene
- End to End vs Atomic tests
- Pretty vs Simple reports
- BDD vs XUnit style of tests
- PageObject vs PageModules (OOP vs Procedural/Modular programming)
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.
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
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? ¯\_(ツ)_/¯
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.
Automation Abstractions: Page Objects and BeyondTechWell
When you start writing automation for your projects, you quickly realize that you need to organize and design the code. You will write far more than “test” code; you also will write abstraction code because you want to make tests easier to read and maintain. But how do you design all this code? How do you organize and structure it? Should you use a domain specific language? Should you go keyword driven or use Gherkin? Should you use page objects with POJO or Factories? Do you create DOM level abstractions? Where do domain models fit in? Alan Richardson provides an overview of options available to you when modeling abstraction layers. Based on his experience with many approaches on real-world commercial projects, Alan helps you understand how to think about the modeling of abstraction layers. Illustrated with a number of code examples, Alan shows you a variety of approaches and discusses the pros and cons associated with each.
Enhance react app with patterns - part 1: higher order componentYao Nien Chung
Writing codes without mindset is a mess. Use one of React advanced patterns to enhance your code base by Higher Order Component.
Please check demo repo for more detail: https://github.com/xJkit/trendmicro-fed-talk-pattern-hoc
You do not need automation engineer - Sqa Days - 2015 - ENIakiv Kramarenko
English Version of presentation for the "You don't need automation engineer" talk, given (in russian) at SQA Days 2015.
You can watch the "screencast" try-out cut at https://youtu.be/TZhbI-JPdG0
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.
These are the slides for the talk given at https://www.meetup.com/South-Florida-Software-Testing/events/233980212
Short summary:
KISS (Keep It Simple Stupid) techniques and practices in Web UI Automation on topics:
- selenium webdriver vs wrappers
- XPath vs CSS Selectors + Selene
- End to End vs Atomic tests
- Pretty vs Simple reports
- BDD vs XUnit style of tests
- PageObject vs PageModules (OOP vs Procedural/Modular programming)
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.
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
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? ¯\_(ツ)_/¯
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.
Automation Abstractions: Page Objects and BeyondTechWell
When you start writing automation for your projects, you quickly realize that you need to organize and design the code. You will write far more than “test” code; you also will write abstraction code because you want to make tests easier to read and maintain. But how do you design all this code? How do you organize and structure it? Should you use a domain specific language? Should you go keyword driven or use Gherkin? Should you use page objects with POJO or Factories? Do you create DOM level abstractions? Where do domain models fit in? Alan Richardson provides an overview of options available to you when modeling abstraction layers. Based on his experience with many approaches on real-world commercial projects, Alan helps you understand how to think about the modeling of abstraction layers. Illustrated with a number of code examples, Alan shows you a variety of approaches and discusses the pros and cons associated with each.
Enhance react app with patterns - part 1: higher order componentYao Nien Chung
Writing codes without mindset is a mess. Use one of React advanced patterns to enhance your code base by Higher Order Component.
Please check demo repo for more detail: https://github.com/xJkit/trendmicro-fed-talk-pattern-hoc
You do not need automation engineer - Sqa Days - 2015 - ENIakiv Kramarenko
English Version of presentation for the "You don't need automation engineer" talk, given (in russian) at SQA Days 2015.
You can watch the "screencast" try-out cut at https://youtu.be/TZhbI-JPdG0
How to cover your web pages with easy tests in Python using easy wrapper over selenium of Selenide style. What are the styles of test coverage? How to start automation on your project? Which tool to choose?
This is a presentation to correspondent workshop (in russian) happened to have place in Kiev, during "Black Tea Testing #8" testing event, organized by Cogniance (cogniance.com) and IT Labs (itlabs.net.ua).
See video (in russian) at https://youtu.be/m1lopvj4nNg
See code src at https://github.com/yashaka/easy-web-tests-python/
Почти каждая Test Automation команда прикладывает много усилий и времени, чтобы построить и отполировать свой Framework. Никто не нуждается в Framework в первую очередь. Вместо этого нужны быстрые, надежные и простые тесты, которые работают и обеспечивают качество для текущего процесса разработки. На это митапе @Nikita Simonovets расскажет, как можно построить хорошую автоматизацию и на какие готовые решения и подходы стоит обратить внимание.
Agenda:
• Whois Test Automation Engineer?
• What is really WebDriver?
• What is really Test Automation Framework?
• Bad examples of Test Automation Solution
• How to write more stable tests
• Stairway to heaven: Selenide vs JDI
Efficient Rails Test-Driven Development - Week 6Marakana Inc.
Learn how to apply the test-first approach to all of your Rails projects. In this six class series, experienced Rails engineer and consultant, Wolfram Arnold applies his real-world perspective to teaching you effective patterns for testing.
In this sixth of six classes, Wolf discusses:
- Integration frameworks (Cucumber, Webrat, Capybara, and Selenium)
- Integration testing with Selenium (advantages and problems)
- Page Objects
- Locators (Selenium, CSS and XPath locators
- RSpec Custom Matchers
- Testing for Access Control
** You can get the slides and source code from this presentation at: http://marakana.com/f/215 **
Find more videos, tutorials, and code examples at http://marakana.com/techtv
Selenide is an open source software testing tool for writing
concise, expressive and stable UI tests in Java.
Selenide resolves all the typical problems with testing of modern web applications like Ajax and timeouts in a simple and elegant way.
Selenide is extremely simple to start with: you don't need to read hundreds-pages-long tutorials.
Just open IDE and start writing. Learning curve is close to zero. With Selenide you don't waste time on googling "how to make Selenium do that" - you can concentrate on business logic.
Selenide = a better Selenium
Automating Django Functional Tests Using Selenium on CloudJonghyun Park
테스트 코드는 작성한 코드가 제대로 동작하고 있는지 점검하는 코드이다. 경우의 수가 많아질수록 사람이 직접 테스트를 하기 어려워지므로, 테스트 코드를 작성해서 최소한의 코드 안정성을 항상 담보해둘 수 있다. 리팩토링할 때는 테스트 코드를 통해 바뀐 코드에 문제가 있는지 금방 확인할 수 있어 특히 유용하다고 할 수 있다.
Django는 자체적으로 테스트를 위한 기능을 제공하고 있다. 파이썬의 unittest 모듈을 확장해서 유용한 기능을 제공하고, 테스트 유닛마다 DB를 새로 생성해 각 테스트 단위의 독립성을 보장한다. 이를 통해 모델(model), 폼(form), 뷰(view) 단위에서 단위 테스트(unit test)를 작성할 수 있다. 하지만 실제 웹상에서 사용자의 동작에 반응하는 기능 테스트(functional test)를 하기는 매우 어려우므로, 이를 위한 별도의 테스트 프레임워크가 필요하다.
Selenium은 브라우저상에서 직접 사용자의 동작을 에뮬레이션할 수 있는 프레임워크로, Python+Django 환경에서 기능 테스트를 수행하기에 알맞은 기능을 제공한다. 웹드라이버(web driver)를 이용해서 실제 브라우저를 동작시키고, 각 페이지의 DOM에 존재하는 객체를 실제로 조작하는 과정을 파이썬 코드로 작성할 수 있다. 개발자가 원하는 방식으로 다양한 기능 테스트 코드를 작성하고 실행함으로써, 웹페이지와 사용자의 상호작용을 직접 테스트할 수 있다. Django가 제공하는 테스트 프레임워크와 결합하면 보다 더 촘촘한 테스트 망을 구축할 수 있다.
Selenium을 이용한 기능 테스트를 작성할 때 가장 중요한 점 중 하나는, 조작하고자 하는 DOM 객체가 준비(ready)될 때까지 기다리는 것이다. 기능 테스트는 단위 테스트와는 다르게 실제 웹브라우저 상에서 이루어지므로, 브라우저에서 DOM이 작동하는 과정에 대한 고려가 필요하다. 예를 들어, 어떤 페이지를 방문하자마자 DOM 객체에 명령을 내린다고 생각해보자. CPU가 빨리 동작하는 환경이라면 다행히 문제가 없을 수도 있겠지만, 그렇지 않고 객체가 아직 준비되지 않았다면 'undefined'가 반환되면서 적절한 테스트가 불가능하게 될 수 있다. 이런 상황을 피하고자 Selenium은 DOM 객체가 로딩될 때까지 기다리는 두 가지 방법을 가지고 있다. Implicit Wait(암시적 기다림)와 Explicit Wait(명시적 기다림)라고 부르는 방법인데, 이번 세션에서는 이들 기다림과 그 차이에 대해 알아볼 것이다. 이 외에 테스트를 작성하면서 얻은 나름의 팁에 대해서도 최대한 설명하고자 한다.
잘 작성한 테스트가 있다고 하더라도 개발자가 매번 테스트하는 것은 여간 귀찮은 일이 아닐 수 없다. 그래서 우리가 사용하고 있는 테스트 자동화에 대해서도 간단하게 이야기하고자 한다. 작성된 Selenium 기능 테스트를 클라우드(AWS) 상에 올려두고, 단위 테스트는 Github 커밋이 올라올 때마다, 기능 테스트는 하루에 한 번 자동으로 수행되도록 하고 있다. 이 테스트 환경 구축에 관한 개인적인 경험을 나누려고 한다.
5.12.15 QA Lab: тестирование ПО.
Upcoming events: goo.gl/I2gJ4H
Доклад о популярных и/или лучших практиках в веб-автоматизации с точки зрения принципа KISS. Мы быстро пробежимся и оставим след в следующих темах и технологиях: Selenium, обертки вокруг Selenium, xUnit, BDD, длинные и не очень - End to End сценарии, маленькие независимые тесты Unit стиля, простые или красивые репорты, Allure репортинг, PageObject, виджеты-элементы, парадигмы программирования для автоматизации - ООП, процедурное и модульное.
In version 0.3, PyUIA introduces the support for PageFactory pattern, the concept of 'single keyword library', performance improvements and some API changes.
These are training slides created by me to conduct training and knowledge sharing sessions for beginners in Cognizant Technology Solutions for Selenium Automation.
Automation with Selenium Presented by Quontra SolutionsQuontra Solutions
Learn through Experience -- We differentiate our training and development program by delivering Role-Based training instead of Product-based training. Ultimately, our goal is to deliver the best IT Training to our clients.
In this training, attendees learn:
Introduction to Automation
• What is automation
• Advantages of automation & Disadvantages of automation
• Different types of Automation Tools
• What to automate in projects
• When to start automation. Scope for automation testing in projects
• About open-source automation tools
Introduction to Selenium
• What is selenium
• Why selenium
• Advantage and Disadvantages of selenium
Selenium components
• Selenium IDE
• Selenium RC
• Selenium WebDriver
• Selenium Grid
Selenium IDE
• Introduction to IDE
• IDE Installation
• Installation and uses of Firepath, Firebug & Debug bar
• Property & value of elements
• Selenium commands
• Assertions & Verification
• Running, pausing and debugging script
• Disadvantages of selenium IDE
• How to convert selenium IDE Scripts into other languages
Locators
• Tools to identify elements/objects
• Firebug
• IE Developer tools
• Google Chrome Developer tools
• Locating elements by ID
• Finding elements by name
• Finding elements by link text
• Finding elements by XPath
• Finding Elements by using CSS
• Summary
Selenium RC
• What is selenium RC
• Advantages of RC, Architecture
• What is Eclipse/IntelliJ, Selenium RC configure with Eclipse/IntelliJ
• Creating, running & debugging RC scripts
Java Concepts
• Introduction to OOPs concepts and Java
• Installation: Java, Eclipse/IntelliJ, selenium, TestNg/JUnit
• operators in java
• Data types in java
• Conditional statements in java
• Looping statements in java
• Output statements in java
• Classes & Objects
• Collection Framework
• Regular Expressions
• Exception Handling
• Packages, Access Specifiers /Modifiers
• String handling
• Log4J for logging
Selenium Web Driver with Java
• Introduction to WebDriver
• Advantages
• Different between RC and WebDriver
• Selenium WebDriver- commands
• Generate scripts in Eclipse/IntelliJ. Run Test Scripts.
• Debugging Test Script
• Database Connections
• Assertions, validations
• Working with Excel
• Pass the data from Excel
• Working with multiple browser
• Window Handling, Alert/confirm & Popup Handling
• Mouse events
• Wait mechanism
• Rich Web Handling: Calendar handing, Auto suggest, Ajax, browser forward/back navigation, keyboard events, certificate handling, event listeners
.....................For more visit http://www.quontrasolutions.co.uk/selenium-training-classes/
This OpenWorld 2015 presentation shows how to automate testing of Oracle Application Development Framework (ADF) applications with Selenium, including visual/perceptual diff checking, JaCoCo Code Coverage, and Isolated taskflow testing with ADF TaskFlow Tester
Selenide vs. Selenium: The War Of TechnologiesBugRaptors
BugRaptors, can develop automated testing that brings cost lessening, time and effort saving, quicker response, consistency and quickly report generator, thereby directly adding to increment in efficiency and prompting boost of benefits by using Selenide and Selenium according to the requirement of the Project.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
6. Selenide = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
(it should be already
automated;)
7. Selenide = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
…
…
…
8. Selenide = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
waiting search
…
…
9. Selenide = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
waiting search
waiting asserts
…
10. Selenide = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
waiting search
waiting asserts
dynamic elements
11. Selenide = Effective
web test automation tool
=
tool to automate
web UI tests logic
not browser
concise API
waiting search
waiting asserts
dynamic elements
34. Built in Explicit Waits aka Waiting
Asserts
WebDriverWait(driver, 4).until(
element_to_be_clickable(by_css('#new-todo')))
# vs
s('#new-todo').should_be(clickable)
49.
def wait_for(entity, condition, timeout):
# ...
end_time = time.time() + timeout
while True:
try:
value = condition(entity)
if value is not None:
return value
except (WebDriverException,) as exc:
# ...
time.sleep(config.poll_during_waits)
if time.time() > end_time:
break
raise TimeoutException(
"""
failed while waiting %s seconds
to assert %s%s
""" % (timeout, condition.__class__.__name__,
str(condition), ...)
50.
def wait_for(entity, condition, timeout):
# ...
end_time = time.time() + timeout
while True:
try:
value = condition(entity)
if value is not None:
return value
except (WebDriverException,) as exc:
# ...
time.sleep(config.poll_during_waits)
if time.time() > end_time:
break
raise TimeoutException(
"""
failed while waiting %s seconds
to assert %s%s
""" % (timeout, condition.__class__.__name__,
str(condition), ...)
51.
def wait_for(entity, condition, timeout):
# ...
end_time = time.time() + timeout
while True:
try:
value = condition(entity)
if value is not None:
return value
except (WebDriverException,) as exc:
# ...
time.sleep(config.poll_during_waits)
if time.time() > end_time:
break
raise TimeoutException(
"""
failed while waiting %s seconds
to assert %s%s
""" % (timeout, method.__class__.__name__,
str(condition), ...)
52.
def wait_for(entity, condition, timeout):
# ...
end_time = time.time() + timeout
while True:
try:
value = condition(entity)
if value is not None:
return value
except (WebDriverException,) as exc:
# ...
time.sleep(config.poll_during_waits)
if time.time() > end_time:
break
raise TimeoutException(
"""
failed while waiting %s seconds
to assert %s%s
""" % (timeout, method.__class__.__name__,
str(condition), ...)
53. class Visible(object):
def __call__(self, selement):
self.selement = selement
found = selement.finder()
return found if found.is_displayed() else None
def __str__(self):
return """
for element found by: %s...
""" % (self.selement.locator, …)
visible = Visible()
54. class Visible(object):
def __call__(self, selement):
self.selement = selement
found = selement.finder()
return found if found.is_displayed() else None
def __str__(self):
return """
for element found by: %s...
""" % (self.selement.locator, …)
visible = Visible()
55. class Visible(object):
def __call__(self, webelement):
self.selement = selement
found = selement.finder()
return webelement.is_displayed()
def __str__(self):
return """
for element found by: %s...
""" % (self.selement.locator, …)
visible = Visible()
Original jSelenide style
with selement.finder() being moved to wait_for
56. class Visible(object):
def __call__(self, webelement):
self.selement = selement
found = selement.finder()
return webelement.is_displayed()
def __str__(self):
return """
for element found by: %s...
""" % (self.selement.locator, …)
visible = Visible()
Original jSelenide style
with selement.finder() being moved to wait_for
more simple
and secure
but
less powerful
68.
def cash(self):
self.is_cached = True
self.finder = lambda: self.found
return self
f
def do(self, command):
try:
if not self.is_cached:
self.refind()
command()
# ...
self.assure(visible)
command()
return self
def click(self):
return self.do(lambda: self.found.click())
Introducing simple cashing
Making Selene almost as fast
as raw Selenium :)
103. Collection of widgets:
selection of one of them
visible_tasks = ss("#todo-list>li", of=Task).filter(visible)
...
...
task = visible_tasks.find(exact_text("a")):
task.delete()
...
104. class SElementsCollectionElementByCondition(SElement):
def __init__(self, selements_collection, condition):
self.coll = selements_collection
self.condition = condition
locator = "(%s).found_by(%s)" % (
self.coll.locator,
self.condition.__class__.__name__)
...
def finder(self):
for selement in self.coll:
if self.condition(selement):
return selement.found
find(exact_text("a")) =>