SlideShare a Scribd company logo
Automated Testing
Arranged by Sun (Frontend dev @Wongnai)
Planning
Coding
Testing
Testing
•Why Automated Testing
•Specified selector
•Common mistakes
Why Automated Testing
start with problems
...
✔ Forget password
✔ Write a review
✔ Signup
✔ Login
...
✔ Change a province
✔ Collection
✔ Article
✔ Listing
✔ Owner can update
✔ Edit user info
✔ Me tab
✔ Challenge
✔ Web-board
✔ Find friend
✔ Check profiles
✔ Follow / Unfollow
✔ Block / Unblock
✔ Message
✔ Feed
✔ Search business
✔ Search chain
✔ Chain landing
✔ Place landing
✔ Logout
✔ Change password
✔ Forget password
✔ Write a review
✔ Signup
✔ Login
✔ Business landing
✔ Been here
✔ Bookmark
✔ Business / Delivery
✔ Map
✔ Phone Call
✔ Business photo
✔ Video
✔ Post Promotion
✔ Promotion on Home
✔ Add photo food
✔ Share photo
✔ Save draft food
✔ Review food
✔ Share review
✔ Buy deal
✔ Redeem deal
✔ Change a province
✔ Collection
✔ Article
✔ Listing
✔ Privilege
✔ Press see all
✔ Add hotel
✔ Search hotel
✔ Hotel
✔ Save draft hotel
✔ Review hotel
✔ Add photo hotel
✔ Book hotel
✔ Edit hotel
✔ Add Attraction
✔ Attractions
✔ Save draft attraction
✔ Review Attraction
✔ Add photo attraction
✔ Edit Attraction
✔ Beauty landing
✔ Save draft beauty
✔ Review beauty
✔ Add photo beauty
✔ Write trip
✔ Search recipe
✔ Recipe landing
✔ Create recipes
✔ Save draft recipes
✔ Publish recipe
✔ Bookmark recipe
✔ Comment & Like Recipe
✔ Comment & Like Homework
✔ Tag recipe
✔ Homework
✔ Cookbooks (Recipe guides)
✔ Brand kitchen
✔ 101 cooking
✔ User Profile
✔ Notification
✔ Celeb chef
✔ Leaderboard
✔ Test coupon
✔ Coupon Section at Home delivery
✔ Search by menu
✔ Home delivery, search business
Testing is time consuming
Specified selector
Learn more how to catch DOM
<form>
<input name="first-name" type="text"/>
<button>Send</button>
<button>Cancel</button>
</form>
index.html
>
<form>
<input name="first-name" type="text"/>
<button test-id=“submit-btn">Send</button>
<button>Cancel</button>
</form>
index.html
> $('button[test-id=submit-btn]')
<form>
<input name="first-name" type="text"/>
<button test-id="submit-btn">Send</button>
<button test-id="cancel-btn">Cancel</button>
</form>
index.html
> npm i -D test-id—generator
<form>
<input name="first-name" type="text"/>
<button test-id="submit-btn">Send</button>
<button test-id="cancel-btn">Cancel</button>
</form>
> feature & testing
1. Separation of concerns
document.querySelector(…)
and a little demo
3. xPath is great
2. Test what user see
When the automation
can run on production env,
we got »Health check«
✅ Testing Frontend Server
Common mistakes
Strategies, failure, & more..
1. Parallel testing
2. Snapshot testing
Directory structure
import { app } from 'modules/app'
import { expect } from 'modules/assert'
app
.init()
.goto('http://127.0.0.1:5500/index.html')
.type('//*"[@placeholder="username"]', 'username')
.type('//*"[@placeholder="password"]', '1234')
.click('//*"[contains(text(), "Login")]')
app
.type(‘//*"[@placeholder="Specific detail"]', ‘1')
app
.type('//*"[@placeholder="Last name"]', 'Virus')
.click('//*"[contains(text(), "Cancel")]')
import { app } from 'modules/app'
import { expect } from 'modules/assert'
app
.init()
.goto('http://127.0.0.1:5500/index.html')
.type('//*"[@placeholder="username"]', 'username')
.type('//*"[@placeholder="password"]', '1234')
.click('//*"[contains(text(), "Login")]')
app
.type(‘//*"[@placeholder="Specific detail"]', ‘1')
app
.type('//*"[@placeholder="Last name"]', 'Virus')
.click('//*"[contains(text(), "Cancel")]')
__tests__/a.ts __tests__/b.ts
import { app } from 'modules/app'
import { expect } from 'modules/assert'
app
.init()
.goto('http://127.0.0.1:5500/index.html')
.type('//*"[@placeholder="username"]', 'username')
.type('//*"[@placeholder="password"]', '1234')
.click('//*"[contains(text(), "Login")]')
app
.type(‘//*"[@placeholder="Specific detail"]', ‘1')
app
.type('//*"[@placeholder="Last name"]', 'Virus')
.click('//*"[contains(text(), "Cancel")]')
import { app } from 'modules/app'
import { expect } from 'modules/assert'
import { login, writeReview } from ‘modules/action'
login()
expect('//*"[contains(text(), "anything")]').exist()
app
.type(‘//*"[@placeholder="Specific detail"]', ‘1')
writeReview()
__tests__/a.ts __tests__/b.ts
-actions
-user
-login
-logout
-review
-write
-edit
-__tests__
-main
-login
-logout
-food
-writeReview
-editReview
3. Directory tree as Action base
Most important part is
Making a decision
+ +
Automated Testing ชีวิตดีๆที่ลงตัว (design + tech stack)
Automated Testing ชีวิตดีๆที่ลงตัว (design + tech stack)
Automated Testing ชีวิตดีๆที่ลงตัว (design + tech stack)

More Related Content

Similar to Automated Testing ชีวิตดีๆที่ลงตัว (design + tech stack)

Core Concepts of Paid Search Marketing
Core Concepts of Paid Search MarketingCore Concepts of Paid Search Marketing
Core Concepts of Paid Search Marketing
Stukent Inc.
 
Kootenay Rockies Tourism - Google For Small Business
Kootenay Rockies Tourism - Google For Small BusinessKootenay Rockies Tourism - Google For Small Business
Kootenay Rockies Tourism - Google For Small Business
Scott Bauer
 
How We Localize & Mobilize WP Sites - Pubcon 2013
How We Localize & Mobilize WP Sites - Pubcon 2013How We Localize & Mobilize WP Sites - Pubcon 2013
How We Localize & Mobilize WP Sites - Pubcon 2013
Search Commander, Inc.
 
Using marketing automation to optimise sales across online and offline
Using marketing automation to optimise sales across online and offlineUsing marketing automation to optimise sales across online and offline
Using marketing automation to optimise sales across online and offline
John Watton
 
10+ ways to get MORE from Google Analytics
10+ ways to get MORE from Google Analytics10+ ways to get MORE from Google Analytics
10+ ways to get MORE from Google Analytics
Tim Stewart
 
The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]
Aaron Gustafson
 
Top Google Analytics Customisations - Brighton SEO April 2018
Top Google Analytics Customisations - Brighton SEO April 2018Top Google Analytics Customisations - Brighton SEO April 2018
Top Google Analytics Customisations - Brighton SEO April 2018
Anna Lewis
 
Startup metrics for pirates long version463
Startup metrics for pirates long version463Startup metrics for pirates long version463
Startup metrics for pirates long version463
PR Consultancy
 
Analytics For Local Search
Analytics For Local SearchAnalytics For Local Search
Analytics For Local Search
Inflow
 
How To Mesure And Optimise Your Roi Using Web Analytics Google
How To Mesure And Optimise Your Roi Using Web Analytics GoogleHow To Mesure And Optimise Your Roi Using Web Analytics Google
How To Mesure And Optimise Your Roi Using Web Analytics Google
2tique
 
Data Management for Local Search
Data Management for Local SearchData Management for Local Search
Data Management for Local Search
Ignitor Digital
 
Google Analytics Overview
Google Analytics OverviewGoogle Analytics Overview
Google Analytics Overview
tradocaj
 
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Christopher Gutknecht
 
Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...
Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...
Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...
Daan Loening
 
Advanced Google Analytics for WordPress
Advanced Google Analytics for WordPressAdvanced Google Analytics for WordPress
Advanced Google Analytics for WordPress
David Vogelpohl
 
Startup Metrics for Pirates (March 2009)
Startup Metrics for Pirates (March 2009)Startup Metrics for Pirates (March 2009)
Startup Metrics for Pirates (March 2009)
Dave McClure
 
Surviving the hype cycle Shortcuts to split testing success
Surviving the hype cycle   Shortcuts to split testing successSurviving the hype cycle   Shortcuts to split testing success
Surviving the hype cycle Shortcuts to split testing success
Craig Sullivan
 
Local SEO Schema
Local SEO SchemaLocal SEO Schema
Local SEO Schema
Rivermaya Inc.
 
Peepcon schema presentation
Peepcon schema presentationPeepcon schema presentation
Peepcon schema presentation
Dennis Seymour
 
9 Steps to Search Engine Optimization (SEO) Success
9 Steps to Search Engine Optimization (SEO) Success9 Steps to Search Engine Optimization (SEO) Success
9 Steps to Search Engine Optimization (SEO) Success
Scott Mowery
 

Similar to Automated Testing ชีวิตดีๆที่ลงตัว (design + tech stack) (20)

Core Concepts of Paid Search Marketing
Core Concepts of Paid Search MarketingCore Concepts of Paid Search Marketing
Core Concepts of Paid Search Marketing
 
Kootenay Rockies Tourism - Google For Small Business
Kootenay Rockies Tourism - Google For Small BusinessKootenay Rockies Tourism - Google For Small Business
Kootenay Rockies Tourism - Google For Small Business
 
How We Localize & Mobilize WP Sites - Pubcon 2013
How We Localize & Mobilize WP Sites - Pubcon 2013How We Localize & Mobilize WP Sites - Pubcon 2013
How We Localize & Mobilize WP Sites - Pubcon 2013
 
Using marketing automation to optimise sales across online and offline
Using marketing automation to optimise sales across online and offlineUsing marketing automation to optimise sales across online and offline
Using marketing automation to optimise sales across online and offline
 
10+ ways to get MORE from Google Analytics
10+ ways to get MORE from Google Analytics10+ ways to get MORE from Google Analytics
10+ ways to get MORE from Google Analytics
 
The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]
 
Top Google Analytics Customisations - Brighton SEO April 2018
Top Google Analytics Customisations - Brighton SEO April 2018Top Google Analytics Customisations - Brighton SEO April 2018
Top Google Analytics Customisations - Brighton SEO April 2018
 
Startup metrics for pirates long version463
Startup metrics for pirates long version463Startup metrics for pirates long version463
Startup metrics for pirates long version463
 
Analytics For Local Search
Analytics For Local SearchAnalytics For Local Search
Analytics For Local Search
 
How To Mesure And Optimise Your Roi Using Web Analytics Google
How To Mesure And Optimise Your Roi Using Web Analytics GoogleHow To Mesure And Optimise Your Roi Using Web Analytics Google
How To Mesure And Optimise Your Roi Using Web Analytics Google
 
Data Management for Local Search
Data Management for Local SearchData Management for Local Search
Data Management for Local Search
 
Google Analytics Overview
Google Analytics OverviewGoogle Analytics Overview
Google Analytics Overview
 
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
 
Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...
Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...
Building a MVP - Validating startup ideas - lean startup - Google Launchpad B...
 
Advanced Google Analytics for WordPress
Advanced Google Analytics for WordPressAdvanced Google Analytics for WordPress
Advanced Google Analytics for WordPress
 
Startup Metrics for Pirates (March 2009)
Startup Metrics for Pirates (March 2009)Startup Metrics for Pirates (March 2009)
Startup Metrics for Pirates (March 2009)
 
Surviving the hype cycle Shortcuts to split testing success
Surviving the hype cycle   Shortcuts to split testing successSurviving the hype cycle   Shortcuts to split testing success
Surviving the hype cycle Shortcuts to split testing success
 
Local SEO Schema
Local SEO SchemaLocal SEO Schema
Local SEO Schema
 
Peepcon schema presentation
Peepcon schema presentationPeepcon schema presentation
Peepcon schema presentation
 
9 Steps to Search Engine Optimization (SEO) Success
9 Steps to Search Engine Optimization (SEO) Success9 Steps to Search Engine Optimization (SEO) Success
9 Steps to Search Engine Optimization (SEO) Success
 

More from Seven Peaks Speaks

BKK Web: Working with SEO
BKK Web: Working with SEOBKK Web: Working with SEO
BKK Web: Working with SEO
Seven Peaks Speaks
 
Seven Peaks Speaks - Compose Screenshot Testing Made Easy
Seven Peaks Speaks - Compose Screenshot Testing Made EasySeven Peaks Speaks - Compose Screenshot Testing Made Easy
Seven Peaks Speaks - Compose Screenshot Testing Made Easy
Seven Peaks Speaks
 
Seven Peaks Speaks - Android Jetpack Compose Animation
Seven Peaks Speaks - Android Jetpack Compose AnimationSeven Peaks Speaks - Android Jetpack Compose Animation
Seven Peaks Speaks - Android Jetpack Compose Animation
Seven Peaks Speaks
 
Seven Peaks Speaks - Compose Navigation
Seven Peaks Speaks - Compose NavigationSeven Peaks Speaks - Compose Navigation
Seven Peaks Speaks - Compose Navigation
Seven Peaks Speaks
 
How to Get Better Performance Out of Your App
How to Get Better Performance Out of Your AppHow to Get Better Performance Out of Your App
How to Get Better Performance Out of Your App
Seven Peaks Speaks
 
RxSubject And Operators
RxSubject And OperatorsRxSubject And Operators
RxSubject And Operators
Seven Peaks Speaks
 
Concurrency in Swift
Concurrency in SwiftConcurrency in Swift
Concurrency in Swift
Seven Peaks Speaks
 
DevSecOps on Azure
DevSecOps on AzureDevSecOps on Azure
DevSecOps on Azure
Seven Peaks Speaks
 
Secure Development of Azure Function
Secure Development of Azure FunctionSecure Development of Azure Function
Secure Development of Azure Function
Seven Peaks Speaks
 
Develop Security & Compliances in Azure
Develop Security & Compliances in AzureDevelop Security & Compliances in Azure
Develop Security & Compliances in Azure
Seven Peaks Speaks
 
Effective Lists Management
Effective Lists ManagementEffective Lists Management
Effective Lists Management
Seven Peaks Speaks
 
Layout Preview Tooling
Layout Preview ToolingLayout Preview Tooling
Layout Preview Tooling
Seven Peaks Speaks
 
Background Processing With Work Manager
Background Processing With Work ManagerBackground Processing With Work Manager
Background Processing With Work Manager
Seven Peaks Speaks
 
Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Seven Peaks Speaks
 
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Seven Peaks Speaks
 
Delivering react app with confidence: Testing Pyramid
Delivering react app with confidence: Testing PyramidDelivering react app with confidence: Testing Pyramid
Delivering react app with confidence: Testing Pyramid
Seven Peaks Speaks
 
React context
React context  React context
React context
Seven Peaks Speaks
 
Getting hooked on performance and clean code
Getting hooked on performance and clean codeGetting hooked on performance and clean code
Getting hooked on performance and clean code
Seven Peaks Speaks
 
Establishing secure Biometric authentication in Android
Establishing secure Biometric authentication in AndroidEstablishing secure Biometric authentication in Android
Establishing secure Biometric authentication in Android
Seven Peaks Speaks
 
Utilizing kotlin flows in an android application
Utilizing kotlin flows in an android applicationUtilizing kotlin flows in an android application
Utilizing kotlin flows in an android application
Seven Peaks Speaks
 

More from Seven Peaks Speaks (20)

BKK Web: Working with SEO
BKK Web: Working with SEOBKK Web: Working with SEO
BKK Web: Working with SEO
 
Seven Peaks Speaks - Compose Screenshot Testing Made Easy
Seven Peaks Speaks - Compose Screenshot Testing Made EasySeven Peaks Speaks - Compose Screenshot Testing Made Easy
Seven Peaks Speaks - Compose Screenshot Testing Made Easy
 
Seven Peaks Speaks - Android Jetpack Compose Animation
Seven Peaks Speaks - Android Jetpack Compose AnimationSeven Peaks Speaks - Android Jetpack Compose Animation
Seven Peaks Speaks - Android Jetpack Compose Animation
 
Seven Peaks Speaks - Compose Navigation
Seven Peaks Speaks - Compose NavigationSeven Peaks Speaks - Compose Navigation
Seven Peaks Speaks - Compose Navigation
 
How to Get Better Performance Out of Your App
How to Get Better Performance Out of Your AppHow to Get Better Performance Out of Your App
How to Get Better Performance Out of Your App
 
RxSubject And Operators
RxSubject And OperatorsRxSubject And Operators
RxSubject And Operators
 
Concurrency in Swift
Concurrency in SwiftConcurrency in Swift
Concurrency in Swift
 
DevSecOps on Azure
DevSecOps on AzureDevSecOps on Azure
DevSecOps on Azure
 
Secure Development of Azure Function
Secure Development of Azure FunctionSecure Development of Azure Function
Secure Development of Azure Function
 
Develop Security & Compliances in Azure
Develop Security & Compliances in AzureDevelop Security & Compliances in Azure
Develop Security & Compliances in Azure
 
Effective Lists Management
Effective Lists ManagementEffective Lists Management
Effective Lists Management
 
Layout Preview Tooling
Layout Preview ToolingLayout Preview Tooling
Layout Preview Tooling
 
Background Processing With Work Manager
Background Processing With Work ManagerBackground Processing With Work Manager
Background Processing With Work Manager
 
Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Graph ql vs rest api - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
 
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
 
Delivering react app with confidence: Testing Pyramid
Delivering react app with confidence: Testing PyramidDelivering react app with confidence: Testing Pyramid
Delivering react app with confidence: Testing Pyramid
 
React context
React context  React context
React context
 
Getting hooked on performance and clean code
Getting hooked on performance and clean codeGetting hooked on performance and clean code
Getting hooked on performance and clean code
 
Establishing secure Biometric authentication in Android
Establishing secure Biometric authentication in AndroidEstablishing secure Biometric authentication in Android
Establishing secure Biometric authentication in Android
 
Utilizing kotlin flows in an android application
Utilizing kotlin flows in an android applicationUtilizing kotlin flows in an android application
Utilizing kotlin flows in an android application
 

Recently uploaded

J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.
AnkitaPandya11
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
Karya Keeper
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 

Recently uploaded (20)

J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 

Automated Testing ชีวิตดีๆที่ลงตัว (design + tech stack)

  • 1. Automated Testing Arranged by Sun (Frontend dev @Wongnai)
  • 7. ... ✔ Forget password ✔ Write a review ✔ Signup ✔ Login ... ✔ Change a province ✔ Collection ✔ Article ✔ Listing
  • 8. ✔ Owner can update ✔ Edit user info ✔ Me tab ✔ Challenge ✔ Web-board ✔ Find friend ✔ Check profiles ✔ Follow / Unfollow ✔ Block / Unblock ✔ Message ✔ Feed ✔ Search business ✔ Search chain ✔ Chain landing ✔ Place landing ✔ Logout ✔ Change password ✔ Forget password ✔ Write a review ✔ Signup ✔ Login ✔ Business landing ✔ Been here ✔ Bookmark ✔ Business / Delivery ✔ Map ✔ Phone Call ✔ Business photo ✔ Video ✔ Post Promotion ✔ Promotion on Home ✔ Add photo food ✔ Share photo ✔ Save draft food ✔ Review food ✔ Share review ✔ Buy deal ✔ Redeem deal ✔ Change a province ✔ Collection ✔ Article ✔ Listing ✔ Privilege ✔ Press see all ✔ Add hotel ✔ Search hotel ✔ Hotel ✔ Save draft hotel ✔ Review hotel ✔ Add photo hotel ✔ Book hotel ✔ Edit hotel ✔ Add Attraction ✔ Attractions ✔ Save draft attraction ✔ Review Attraction ✔ Add photo attraction ✔ Edit Attraction ✔ Beauty landing ✔ Save draft beauty ✔ Review beauty ✔ Add photo beauty ✔ Write trip ✔ Search recipe ✔ Recipe landing ✔ Create recipes ✔ Save draft recipes ✔ Publish recipe ✔ Bookmark recipe ✔ Comment & Like Recipe ✔ Comment & Like Homework ✔ Tag recipe ✔ Homework ✔ Cookbooks (Recipe guides) ✔ Brand kitchen ✔ 101 cooking ✔ User Profile ✔ Notification ✔ Celeb chef ✔ Leaderboard ✔ Test coupon ✔ Coupon Section at Home delivery ✔ Search by menu ✔ Home delivery, search business
  • 9.
  • 10.
  • 11. Testing is time consuming
  • 12. Specified selector Learn more how to catch DOM
  • 14. <form> <input name="first-name" type="text"/> <button test-id=“submit-btn">Send</button> <button>Cancel</button> </form> index.html > $('button[test-id=submit-btn]')
  • 15. <form> <input name="first-name" type="text"/> <button test-id="submit-btn">Send</button> <button test-id="cancel-btn">Cancel</button> </form> index.html > npm i -D test-id—generator
  • 16. <form> <input name="first-name" type="text"/> <button test-id="submit-btn">Send</button> <button test-id="cancel-btn">Cancel</button> </form> > feature & testing 1. Separation of concerns
  • 18. 3. xPath is great 2. Test what user see
  • 19. When the automation can run on production env, we got »Health check« ✅ Testing Frontend Server
  • 24. import { app } from 'modules/app' import { expect } from 'modules/assert' app .init() .goto('http://127.0.0.1:5500/index.html') .type('//*"[@placeholder="username"]', 'username') .type('//*"[@placeholder="password"]', '1234') .click('//*"[contains(text(), "Login")]') app .type(‘//*"[@placeholder="Specific detail"]', ‘1') app .type('//*"[@placeholder="Last name"]', 'Virus') .click('//*"[contains(text(), "Cancel")]') import { app } from 'modules/app' import { expect } from 'modules/assert' app .init() .goto('http://127.0.0.1:5500/index.html') .type('//*"[@placeholder="username"]', 'username') .type('//*"[@placeholder="password"]', '1234') .click('//*"[contains(text(), "Login")]') app .type(‘//*"[@placeholder="Specific detail"]', ‘1') app .type('//*"[@placeholder="Last name"]', 'Virus') .click('//*"[contains(text(), "Cancel")]') __tests__/a.ts __tests__/b.ts
  • 25. import { app } from 'modules/app' import { expect } from 'modules/assert' app .init() .goto('http://127.0.0.1:5500/index.html') .type('//*"[@placeholder="username"]', 'username') .type('//*"[@placeholder="password"]', '1234') .click('//*"[contains(text(), "Login")]') app .type(‘//*"[@placeholder="Specific detail"]', ‘1') app .type('//*"[@placeholder="Last name"]', 'Virus') .click('//*"[contains(text(), "Cancel")]') import { app } from 'modules/app' import { expect } from 'modules/assert' import { login, writeReview } from ‘modules/action' login() expect('//*"[contains(text(), "anything")]').exist() app .type(‘//*"[@placeholder="Specific detail"]', ‘1') writeReview() __tests__/a.ts __tests__/b.ts
  • 27. Most important part is Making a decision
  • 28. + +