SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
@JanMolak @Wakaleo#Devoxx #SerenityJS
@JanMolak @Wakaleo#Devoxx #SerenityJS
@JanMolak @Wakaleo#Devoxx #SerenityJS
Jan Molak, John Smart:
Next Generation
Acceptance Testing
@JanMolak @Wakaleo#Devoxx #SerenityJS
acceptance tests that help deliver

working software
that matters
@JanMolak @Wakaleo#Devoxx #SerenityJS
what’s the root cause of

most software
defects?
@JanMolak @Wakaleo#Devoxx #SerenityJS
ambiguous,
unclear
and incorrect

requirements
@JanMolak @Wakaleo#Devoxx #SerenityJS
44-80%

of all software defects
source:
- 44% - “Out of Control - Why Control Systems Go Wrong and How to Prevent Failure”
- 56% - “An Information Systems Manifesto”
- 80% - “Requirements: A quick and inexpensive way to improve testing”
@JanMolak @Wakaleo#Devoxx #SerenityJS
Behaviour-Driven Development
@JanMolak @Wakaleo#Devoxx #SerenityJS
Domain-Driven Design
Behaviour-Driven Development
@JanMolak @Wakaleo#Devoxx #SerenityJS
User-Centred Design
Domain-Driven Design
Behaviour-Driven Development
@JanMolak @Wakaleo#Devoxx #SerenityJS
reliable
scalable
actionable
acceptance tests that are:
@JanMolak @Wakaleo#Devoxx #SerenityJS
example
feature → scenario
@JanMolak @Wakaleo#Devoxx #SerenityJS
	Feature:	Filter	the	list	to	find	items	of	interest



			In	order	to	limit	the	cognitive	load

			James	would	like	to	filter	his	todo	list	

			to	only	show	items	of	interest

@JanMolak @Wakaleo#Devoxx #SerenityJS
	Scenario:	Viewing	Active	items	only



	Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee

			And	he	completes	Walk	the	dog

		When	he	filters	his	list	to	show	only	Active	tasks

		Then	his	todo	list	should	contain	Get	a	coffee
@JanMolak @Wakaleo#Devoxx #SerenityJS
automation, take #1
“a test script”
@JanMolak @Wakaleo#Devoxx #SerenityJS
		
	Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee	
	——————————————————————————————————————————————————————	
	this.Given(/^.*has	a	list	with	(.*)$/,	(items,	done)	=>	{	
			done();

	});
@JanMolak @Wakaleo#Devoxx #SerenityJS
	Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee	
	——————————————————————————————————————————————————————	
	this.Given	(/^.*has	a	list	with	(.*)$/,	(items,	done)	=>	{	
		browser.get('http://todomvc.com/examples/angularjs/');

		items.split(‘,’).forEach(item	=>	{

						element(by.id(‘new-todo’)).

										sendKeys(item);

						element(by.id(‘new-todo’)).

										sendKeys(protractor.Key.ENTER);

		});	
		done();

	});
@JanMolak @Wakaleo#Devoxx #SerenityJS
	Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee	
	——————————————————————————————————————————————————————	
	this.Given	(/^.*has	a	list	with	(.*)$/,	(items,	done)	=>	{	
		browser.get('http://todomvc.com/examples/angularjs/');

		items.split(‘,’).forEach(item	=>	{

						element(by.id(‘new-todo’)).

										sendKeys(item);

						element(by.id(‘new-todo’)).

										sendKeys(protractor.Key.ENTER);

		});	
		done();

	});
@JanMolak @Wakaleo#Devoxx #SerenityJS
automation, take #2
“a re-structured 

test script”
@JanMolak @Wakaleo#Devoxx #SerenityJS
	Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee	
	——————————————————————————————————————————————————————	
	this.Given	(/^.*has	a	list	with	(.*)$/,	(items,	done)	=>	{	
			let	todoList	=	new	TodoListPage();	
			todoList.get();

			items.split(‘,’).forEach(item	=>	{

							todoList.add(item);	
			});	
			done();

	});
@JanMolak @Wakaleo#Devoxx #SerenityJS
class	TodoListPage	{

				get	()	{	
								browser.get('http://todomvc.com/examples/angularjs/');	
				}



				add	(item:	string)	{

								element(by.id(‘new-todo’)).sendKeys(item);

								element(by.id('new-todo')).sendKeys(protractor.Key.ENTER);

				}



				complete	(item:	string)	{	
								element(by.xpath(	
										'//*[@class="view"	and	contains(.,"'	+	item	+	'")]'	+	

										'//input[@type="checkbox"]'

								)).click();	
				}	
				//	…

}
@JanMolak @Wakaleo#Devoxx #SerenityJS
class	TodoListPage	{

				get	()	{	
								browser.get('http://todomvc.com/examples/angularjs/');	
				}



				add	(item:	string)	{

								element(by.id(‘new-todo’)).sendKeys(item);

								element(by.id('new-todo')).sendKeys(protractor.Key.ENTER);

				}



				complete	(item:	string)	{	
								element(by.xpath(	
										'//*[@class="view"	and	contains(.,"'	+	item	+	'")]'	+	

										'//input[@type="checkbox"]'

								)).click();	
				}	
				//	…

}
@JanMolak @Wakaleo#Devoxx #SerenityJS
automation, take #3
“a screenplay”
@JanMolak @Wakaleo#Devoxx #SerenityJS
hierarchical task analysis
@JanMolak @Wakaleo#Devoxx #SerenityJS
hierarchical task analysis
actor
@JanMolak @Wakaleo#Devoxx #SerenityJS
hierarchical task analysis
goal
@JanMolak @Wakaleo#Devoxx #SerenityJS
hierarchical task analysis
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
hierarchical task analysis
interactions
@JanMolak @Wakaleo#Devoxx #SerenityJS
Feature:	Filter	the	list	to	find	items	of	interest



		In	order	to	limit	the	cognitive	load

		James	would	like	to	filter	his	todo	list	

		to	only	show	items	of	interest	
		Scenario:	Viewing	Active	items	only



		Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee

				And	he	completes	Walk	the	dog

			When	he	filters	his	list	to	show	only	Active	tasks

			Then	his	todo	list	should	contain	Get	a	coffee
@JanMolak @Wakaleo#Devoxx #SerenityJS
Feature:	Filter	the	list	to	find	items	of	interest



		In	order	to	limit	the	cognitive	load

		James	would	like	to	filter	his	todo	list	

		to	only	show	items	of	interest	
		Scenario:	Viewing	Active	items	only



		Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee

				And	he	completes	Walk	the	dog

			When	he	filters	his	list	to	show	only	Active	tasks

			Then	his	todo	list	should	contain	Get	a	coffee
actor
@JanMolak @Wakaleo#Devoxx #SerenityJS
Feature:	Filter	the	list	to	find	items	of	interest



		In	order	to	limit	the	cognitive	load

		James	would	like	to	filter	his	todo	list	

		to	only	show	items	of	interest	
		Scenario:	Viewing	Active	items	only



		Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee

				And	he	completes	Walk	the	dog

			When	he	filters	his	list	to	show	only	Active	tasks

			Then	his	todo	list	should	contain	Get	a	coffee
actor
goal
@JanMolak @Wakaleo#Devoxx #SerenityJS
Scenario:	Viewing	Active	items	only



Given	James	has	a	list	with	Walk	the	dog,	Get	a	coffee

		And	he	completes	Walk	the	dog

	When	he	filters	his	list	to	show	only	Active	tasks

	Then	his	todo	list	should	contain	Get	a	coffee
actor
goal
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
To	view	Active	items	only,	James	attempts	to:

Start	with	a	list	containing:	Walk	the	dog,	Get	a	coffee	
Complete	a	todo	item	called:	Walk	the	dog	

Filter	list	to	show	only	Active	tasks

Expect	to	see:	Get	a	coffee
actor
goal
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
To	view	Active	items	only,	James	attempts	to:

Start	with	a	list	containing:	Walk	the	dog,	Get	a	coffee	
		Open	browser	on	‘todomvc.com/examples/angularjs/'	
		Resize	browser	window	to	maximum	
		Add	a	todo	item	called	‘Walk	the	dog’	
		Add	a	todo	item	called	‘Get	a	coffee’	
...
actor
goal
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
To	view	Active	items	only,	James	attempts	to:

Start	with	a	list	containing:	Walk	the	dog,	Get	a	coffee	
		Open	browser	on	‘todomvc.com/examples/angularjs/'	
		Resize	browser	window	to	maximum	
		Add	a	todo	item	called	‘Walk	the	dog’	
		Add	a	todo	item	called	‘Get	a	coffee’	
				Enter	the	value	‘Get	a	coffee’	
				Hit	the	Enter	key	
...
actor
goal
tasks
inter-

actions
@JanMolak @Wakaleo#Devoxx #SerenityJS
To	view	Active	items	only,	James	attempts	to:

Start	with	a	list	containing:	Walk	the	dog,	Get	a	coffee	
		Open	browser	on	‘todomvc.com/examples/angularjs/'	
		Resize	browser	window	to	maximum	
		Add	a	todo	item	called	‘Walk	the	dog’	
		Add	a	todo	item	called	‘Get	a	coffee’	
				Enter	the	value	‘Get	a	coffee’	
				Hit	the	Enter	key	
...
@JanMolak @Wakaleo#Devoxx #SerenityJS
To	view	Active	items	only,	James	attempts	to:

Start.withATodoListContaining(‘Walk	the	dog’,	…)	
		Open.browserOn(‘todomvc.com/examples/angularjs/’)	
		ResizeBrowserWindow.toMaximum()	
		AddATodoItem.called(‘Walk	the	dog’)	
		AddATodoItem.called(‘Get	a	coffee’)	
				Enter.theValue(‘Get	a	coffee’)

									.into(TodoList.New_Todo_Field)	
									.thenHit(protractor.Key.Enter)
@JanMolak @Wakaleo#Devoxx #SerenityJS
To	view	Active	items	only,	James	attempts	to:

Start.withATodoListContaining(‘Walk	the	dog’,	…)	
		Open.browserOn(‘todomvc.com/examples/angularjs/’)	
		ResizeBrowserWindow.toMaximum()	
		AddATodoItem.called(‘Walk	the	dog’)	
		AddATodoItem.called(‘Get	a	coffee’)	
				Enter.theValue(‘Get	a	coffee’)

									.into(TodoList.New_Todo_Field)	
									.thenHit(protractor.Key.Enter)
@JanMolak @Wakaleo#Devoxx #SerenityJS
Serenity/JS
Screenplay Pattern
@JanMolak @Wakaleo#Devoxx #SerenityJS
	let	james	=	Actor.named(‘James’);	actor
@JanMolak @Wakaleo#Devoxx #SerenityJS
	let	james	=	Actor.named(‘James’).whoCan(	
				BrowseTheWeb.using(protractor.browser)	
	);	
actor
has
abilities
@JanMolak @Wakaleo#Devoxx #SerenityJS
	james.attemptsTo(

					Start.withATodoListContaining(items)

	);	
actor
performs
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
	this.Given	(/^.*has	a	list	with	(.*)$/,	(items)	=>	{	
			return	james.attemptsTo(

					Start.withATodoListContaining(items)

			);	
	});	
actor
performs
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
export	class	Start	implements	Task	{	


		performAs(actor:	PerformsTasks):	PromiseLike<void>	{	
				return	actor.attemptsTo(

						Open.browserOn('/examples/angularjs/'),

						ResizeBrowserWindow.toMaximum(),

						AddTodoItems.called(this.initialItems)

				);

		}	

}
tasks
consist of
tasks
@JanMolak @Wakaleo#Devoxx #SerenityJS
export	class	AddATodoItem	implements	Task	{	


		performAs(actor:	PerformsTasks):	PromiseLike<void>	{

				return	actor.attemptsTo(

						Enter.theValue(‘Walk	the	dog’)

										.into(TodoList.New_Todo_Field),	
						Hit.the(protractor.Key.Enter)

										.into(ToDoList.New_Todo_Field)

);
}

}
tasks
consist of
inter-
actions
@JanMolak @Wakaleo#Devoxx #SerenityJS
export	class	AddATodoItem	implements	Task	{	
		@step('{0}	adds	a	todo	item	called	"#name"')

		performAs(actor:	PerformsTasks):	PromiseLike<void>	{

				//	…	
		}	
		constructor(private	name:	string)	{

		}	
}
tasks
can be
annotated
@JanMolak @Wakaleo#Devoxx #SerenityJS
to create
powerful
reports
@JanMolak @Wakaleo#Devoxx #SerenityJS
lights, camera,

Demo!
@JanMolak @Wakaleo#Devoxx #SerenityJS
github.com/jan-molak/serenity-js

Mais conteúdo relacionado

Semelhante a Serenity/JS - next generation acceptance testing for modern web applications

Screenplay - Next generation automated acceptance testing
Screenplay - Next generation automated acceptance testingScreenplay - Next generation automated acceptance testing
Screenplay - Next generation automated acceptance testingJohn Ferguson Smart Limited
 
Behaviour driven architecture
Behaviour driven architectureBehaviour driven architecture
Behaviour driven architectureJan Molak
 
DevOpsDays - Pick any Three - Devops from scratch
DevOpsDays - Pick any Three - Devops from scratchDevOpsDays - Pick any Three - Devops from scratch
DevOpsDays - Pick any Three - Devops from scratchPete Cheslock
 
The business case for devops
The business case for devopsThe business case for devops
The business case for devopsMatthew Skelton
 
Hybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stackHybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stackJacques De Vos
 
Firebase App Indexing - SMX Advanced
Firebase App Indexing - SMX AdvancedFirebase App Indexing - SMX Advanced
Firebase App Indexing - SMX AdvancedDavid Iwanow
 
Where are you in your mobile maturity … and where do you want to be?
Where are you in your mobile maturity … and where do you want to be?Where are you in your mobile maturity … and where do you want to be?
Where are you in your mobile maturity … and where do you want to be?Axway Appcelerator
 
Microservices the modern it stack trends of tomorrow
Microservices the modern it stack trends of tomorrowMicroservices the modern it stack trends of tomorrow
Microservices the modern it stack trends of tomorrowJonah Kowall
 
DevOps Days India Keynote
DevOps Days India KeynoteDevOps Days India Keynote
DevOps Days India KeynoteNathen Harvey
 
DevOps Beyond the Buzzwords: What it Means to Embrace the DevOps Lifestyle
DevOps Beyond the Buzzwords: What it Means to Embrace the DevOps LifestyleDevOps Beyond the Buzzwords: What it Means to Embrace the DevOps Lifestyle
DevOps Beyond the Buzzwords: What it Means to Embrace the DevOps LifestyleMark Heckler
 
Identify Development Pains and Resolve Them with Idea Flow
Identify Development Pains and Resolve Them with Idea FlowIdentify Development Pains and Resolve Them with Idea Flow
Identify Development Pains and Resolve Them with Idea FlowTechWell
 
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya JancaDevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya JancaDevSecCon
 
Continuous Delivery: The New Normal. London Event.
Continuous Delivery: The New Normal. London Event. Continuous Delivery: The New Normal. London Event.
Continuous Delivery: The New Normal. London Event. Perforce
 
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"Aaron Rinehart
 
Whitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALMWhitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALMKovair
 
DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016
DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016
DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016DevOpsDays Tel Aviv
 
Pick Any Three: Good, Fast, or Safe - Devops from Scratch
Pick Any Three: Good, Fast, or Safe - Devops from ScratchPick Any Three: Good, Fast, or Safe - Devops from Scratch
Pick Any Three: Good, Fast, or Safe - Devops from ScratchPete Cheslock
 
SCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOpsSCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOpsStefan Streichsbier
 
DevOps Beyond the Buzzwords: Culture, Tools, & Straight Talk
DevOps Beyond the Buzzwords: Culture, Tools, & Straight TalkDevOps Beyond the Buzzwords: Culture, Tools, & Straight Talk
DevOps Beyond the Buzzwords: Culture, Tools, & Straight TalkMark Heckler
 

Semelhante a Serenity/JS - next generation acceptance testing for modern web applications (20)

Screenplay - Next generation automated acceptance testing
Screenplay - Next generation automated acceptance testingScreenplay - Next generation automated acceptance testing
Screenplay - Next generation automated acceptance testing
 
Behaviour driven architecture
Behaviour driven architectureBehaviour driven architecture
Behaviour driven architecture
 
DevOpsDays - Pick any Three - Devops from scratch
DevOpsDays - Pick any Three - Devops from scratchDevOpsDays - Pick any Three - Devops from scratch
DevOpsDays - Pick any Three - Devops from scratch
 
The business case for devops
The business case for devopsThe business case for devops
The business case for devops
 
Hybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stackHybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stack
 
Firebase App Indexing - SMX Advanced
Firebase App Indexing - SMX AdvancedFirebase App Indexing - SMX Advanced
Firebase App Indexing - SMX Advanced
 
Shift left-devoxx-pl
Shift left-devoxx-plShift left-devoxx-pl
Shift left-devoxx-pl
 
Where are you in your mobile maturity … and where do you want to be?
Where are you in your mobile maturity … and where do you want to be?Where are you in your mobile maturity … and where do you want to be?
Where are you in your mobile maturity … and where do you want to be?
 
Microservices the modern it stack trends of tomorrow
Microservices the modern it stack trends of tomorrowMicroservices the modern it stack trends of tomorrow
Microservices the modern it stack trends of tomorrow
 
DevOps Days India Keynote
DevOps Days India KeynoteDevOps Days India Keynote
DevOps Days India Keynote
 
DevOps Beyond the Buzzwords: What it Means to Embrace the DevOps Lifestyle
DevOps Beyond the Buzzwords: What it Means to Embrace the DevOps LifestyleDevOps Beyond the Buzzwords: What it Means to Embrace the DevOps Lifestyle
DevOps Beyond the Buzzwords: What it Means to Embrace the DevOps Lifestyle
 
Identify Development Pains and Resolve Them with Idea Flow
Identify Development Pains and Resolve Them with Idea FlowIdentify Development Pains and Resolve Them with Idea Flow
Identify Development Pains and Resolve Them with Idea Flow
 
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya JancaDevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
 
Continuous Delivery: The New Normal. London Event.
Continuous Delivery: The New Normal. London Event. Continuous Delivery: The New Normal. London Event.
Continuous Delivery: The New Normal. London Event.
 
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
 
Whitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALMWhitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALM
 
DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016
DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016
DevOps?! That's not my job! - Nathen Harvey, Chef - DevOpsDays Tel Aviv 2016
 
Pick Any Three: Good, Fast, or Safe - Devops from Scratch
Pick Any Three: Good, Fast, or Safe - Devops from ScratchPick Any Three: Good, Fast, or Safe - Devops from Scratch
Pick Any Three: Good, Fast, or Safe - Devops from Scratch
 
SCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOpsSCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOps
 
DevOps Beyond the Buzzwords: Culture, Tools, & Straight Talk
DevOps Beyond the Buzzwords: Culture, Tools, & Straight TalkDevOps Beyond the Buzzwords: Culture, Tools, & Straight Talk
DevOps Beyond the Buzzwords: Culture, Tools, & Straight Talk
 

Último

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 

Último (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 

Serenity/JS - next generation acceptance testing for modern web applications