SlideShare a Scribd company logo
1 of 111
Download to read offline
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Behaviour-Driven Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Jan Molak
consultant, trainer, lead dev of Serenity/JS
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Behaviour-Driven Architecture
BDD
UCD
XPDDD
EA
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Full-Stack JavaScript
=
new opportunities
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Full-Stack JavaScript
=
new Challenges
serenity-js.org#SerenityJS #FullStackCon @JanMolak
JavaScript !== toy
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Web development in 1998.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal?

Make the machine obey ;-)
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Testability?

It works on my machine!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Maintainability?
I’ll just write a new one,
it’s fun!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Team work?
Nah, they’d slow me down!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Fast forward to 2018…
serenity-js.org#SerenityJS #FullStackCon @JanMolak
We need Architecture!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
What is architecture?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”Highest-level breakdown of a system into parts

and the decisions that are hard to change

- Martin Fowler
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”The shared understanding of expert developers
working on a project.

- Ralph E. Johnson
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”An evolutionary architecture supports guided,
incremental change across multiple dimensions.

- Neal Ford, Rebecca Parsons, Patrick Kua
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Architecture is about:
- decomposition
- shared understanding
- guided evolution
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Decomposition
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
- I look at the requirements
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
- I look at the requirements
- OK, then what?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you decompose a problem?
- I look at the requirements
- OK, then what?
- I use my experience…
serenity-js.org#SerenityJS #FullStackCon @JanMolak
n developers => n2 designs*
* I made this one up, but I bet it’s pretty close
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you build a shared understanding?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you build a shared understanding?
- We agree on how to Build it Right:

coding standards,

design patterns,

architectural patterns,

test coverage…
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How do you build a shared understanding?
- We agree on how to Build it Right:

coding standards,

design patterns,

architectural patterns,

test coverage…
- ok, but how do you know you’re building

The Right Thing?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”On average some 45% of the features delivered 

into production are never used.

- The Standish Group’s CHAOS Report 2002
serenity-js.org#SerenityJS #FullStackCon @JanMolak
The Three Pillars of
Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Image credit: Benh LIEU SONG 
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Form
- structure made of stone
- Organised into arches
- Implements a 3-tier architecture
- Top tier supports a water conduit
- Bottom tier integrates with the river
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Function
- continuously delivers fresh water
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Context
- who are the users?
- how much water are we talking?
- what if the spring dries out?
- how do we support it when it goes live?
- … does it have to be an aqueduct?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Context
Function
Form
The Three Pillars of Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Informs
Drives
Influences
Context
Function
Form
The Three Pillars of Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Behaviour-Driven Development
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”Behaviour-Driven Development

BDD is a practice of using Cucumber to write

slow and flaky automated tests, 

driving the fully-assembled system through its UI.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Strategic BDD
Tactical BDD
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Impact Mapping
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”Impact Mapping is a collaborative way to help us
understand the bigger picture, describe roadmaps
and figure out how we’re going to have

a huge impact with our software and achieve
something great instead of just shipping features.

- Gojko Adzic
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a specific time scale
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a specific time scale
People who can help us

achieve the goal
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a specific time scale
People who can help us

achieve the goal
Personas Market segments
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a specific time scale
People who can help us

achieve the goal
Personas Market segments
How should people’s

behaviour change?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Measurable, clear goal

with a specific time scale
People who can help us

achieve the goal
Personas Market segments
How should people’s

behaviour change?
What can we do?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Concrete Example
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Customers
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Customers
Come back more frequently
Don’t lose their documents
Read their documents
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Come back more frequently
Don’t lose their documents
Read their documents
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Come back more frequently
Don’t lose their documents
Manage all templates

in one place
Read their documents
Automate document

delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Document

Library
Come back more frequently
Don’t lose their documents
Manage all templates

in one place
Read their documents
Automate document

delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Document

Library
Notifications
Come back more frequently
Don’t lose their documents
Manage all templates

in one place
Read their documents
Automate document

delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Document

Library
Notifications
Come back more frequently
Don’t lose their documents
Manage all templates

in one place
Read their documents
Document

GeneratorAutomate document

delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Document

Library
Notifications
Enterprise CMS
Come back more frequently
Don’t lose their documents
Manage all templates

in one place
Read their documents
Document

GeneratorAutomate document

delivery
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Impact Mapping

and Architecture
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Goal Actor Impact Deliverable
Digital

documents

only
Content

Editors
Customers
Document

Library
Notifications
Enterprise CMS
Come back more frequently
Don’t lose their documents
Manage all templates

in one place
Read their documents
Document

GeneratorAutomate document

generation
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
System Context
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Deliverables
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Automated Document Delivery
In order to reduce cost and environmental impact
As a responsible financial company
We’d like the customer documents
to be generated automatically
And delivered in a digital format
When specified business events occur
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Feature Mapping
serenity-js.org#SerenityJS #FullStackCon @JanMolak
“ ”
Feature Mapping is a light-weight, outcome-focused,
highly collaborative requirements discovery practice
that helps build a deep collective understanding of
customer needs, and that provides a smooth path to
high quality executable specifications.

- John Ferguson Smart
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Automated Document Delivery
In order to reduce cost and environmental impact
As a responsible financial company
We’d like the customer documents
to be generated automatically
And delivered in a digital format
When specified business events occur
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- Could you give me an example of that?
- Service Agreement should be delivered

when the Customer registers with our service
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Actors: Connie the Customer
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- What’s the role of the Content Editor 

in that process then?
- Content editors prepare the templates 

based on which the documents should be
generated
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Actors: Connie the Customer, Edna the Editor
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- How is the Service Agreement connected

with the registration event?
- Edna will have to configure this… somehow.

It would be nice if she could 

use the CMS for that.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Actors: Connie the Customer, Edna the Editor
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
How is she going
to do that?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- We seem to be relying on that CMS quite a lot.
What if it goes down?
- We should retry the process when it’s back up

and notify the customer when the document is
delivered
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Actors: Connie the Customer, Edna the Editor
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
CMS is down
Connie is notified

when the document

is ready
- || - - || -- || -
serenity-js.org#SerenityJS #FullStackCon @JanMolak
- Should connie be notified when any document is
delivered, or just in this case?
- Well, some of the documents will be triggered
without her action.

That’s the case with monthly, quarterly and
annual statements.

So yes, she should be notified when any
document is delivered.
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Actors: Connie the Customer, Edna the Editor
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
Customer 

is notified when

the Document

is delivered
Connie is notified

when the document

is ready
- || - - || -- || -
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Making specifications
executable
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Connie Registers

with our service
Service Agreement

Upon registration
Examples: Tasks: Consequences:
Connie sees the
Service Agreement
in her Library
Edna prepares the
template for the
Service Agreement
Edna configures
Service Agreement
to be delivered
upon customer
registration
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Testing at the right level
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
MOCK SERVER
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Given	Edna	has	prepared	a	template	for	the	Service	Agreement
Test CLIENT
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
Emit Event
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
When	Connie	registers	with	our	service
Customer
Accounts
Registers
an account
Emits
Test Event Emitter
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Then	she	should	see	the	Service	Agreement	in	her	Library
Customer
Accounts
Registers
an account
Emits
Test Client
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Test scope can be managed!
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
Test Scope
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Document

Library
Notifications

System
Enterprise
CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Customer
Accounts
Registers
an account
Emits
serenity-js.org#SerenityJS #FullStackCon @JanMolak
How do you implement it?
const	Edna			=	Actor.named(‘Edna’),

						Connie	=	Actor.named(‘Connie’);
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
const	Edna			=	Actor.named(‘Edna’).whoCan(ControlTheMockServer()),

						Connie	=	Actor.named(‘Connie’).whoCan(BrowseTheWeb.using(browser));
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
const	Edna			=	Actor.named(‘Edna’).whoCan(ControlTheMockServer()),

						Connie	=	Actor.named(‘Connie’).whoCan(BrowseTheWeb.using(browser));	
Edna.attemptsTo(	
		PrepareDocumentTemplate.for(‘Service	Agreement’),	
		SetDocumentDeliveryTrigger.for(‘Service	Agreement’).to(CustomerRegistered),	
);
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
const	Edna			=	Actor.named(‘Edna’).whoCan(ControlTheMockServer()),

						Connie	=	Actor.named(‘Connie’).whoCan(BrowseTheWeb.using(browser));	
Edna.attemptsTo(	
		PrepareDocumentTemplate.for(‘Service	Agreement’),	
		SetDocumentDeliveryTrigger.for(‘Service	Agreement’).to(CustomerRegistered),	
);	
Connie.attemptsTo(	
		RegisterWithTheService.as(’Connie’).withEmail(‘…’).withPassword(‘…’),	
		See.if(DocumentLibrary.documents(),	contain(‘Service	Agreement’),	
);
Scenario:	Service	Agreement	is	delivered	upon	customer	registration	
Given	Edna	has	prepared	a	template	for	the	Service	Agreement	
		And	configured	the	Service	Agreement	to	be	delivered	upon	customer	registration	
	When	Connie	registers	with	our	service	
	Then	she	should	see	the	Service	Agreement	in	her	Library
serenity-js.org#SerenityJS #FullStackCon @JanMolak
RegisterWithTheService.as(’Connie’).withEmail(‘…’).withPassword(‘…’)
const	RegisterViaUI	=	(details)	=>	Task.where(`#actor	registers	via	UI`,	

		Open.browserOn(`https://myservice.com`),	
		Enter.theValue(details.username).into(RegisterAccountWidget.Username_Field),	
		Enter.theValue(details.email).into(RegisterAccountWidget.Email_Field),	
		Enter.theValue(details.password).into(RegisterAccountWidget.Password_Field),

		Click.on(RegisterAccountWidget.Submit_Button),

);
Document

Library
Notifications

System
Enterprise CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Customer Accounts Registers an
account
Emits
Browser
serenity-js.org#SerenityJS #FullStackCon @JanMolak
RegisterWithTheService.as(’Connie’).withEmail(‘…’).withPassword(‘…’)
const	RegisterViaAPI	=	(details)	=>	Task.where(`#actor	registers	via	REST	API`,	

		Post.item(details).on(`https://myservice.com/api/accounts`),

);
Document

Library
Notifications

System
Enterprise CMS
Document

Generator
Customer
Content

Editor
Edits

document

templates
Sends email Reads documents
“Prints”

documents
Delivers documents
Notifies about

new documents
Triggers
Business Event
Customer Accounts Registers an
account
Emits
API
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Living Documentation
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Closing thoughts
serenity-js.org#SerenityJS #FullStackCon @JanMolak
When working on a new feature ask:
- What’s the business goal? Why is this needed?
- What’s the context? Who are the “users”?
- What If something doesn’t go according to plan?
- How are we going to test it? support it? 

measure the impact of our work?
serenity-js.org#SerenityJS #FullStackCon @JanMolak
Thanks!
@JanMolak

janmolak.com

serenity-js.org

More Related Content

What's hot

Architectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 Concept
Architectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 ConceptArchitectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 Concept
Architectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 ConceptGalala University
 
Commercial Roofing Proposal PowerPoint Presentation Slides
Commercial Roofing Proposal PowerPoint Presentation SlidesCommercial Roofing Proposal PowerPoint Presentation Slides
Commercial Roofing Proposal PowerPoint Presentation SlidesSlideTeam
 
Practical Application of Business Architecture
Practical Application of Business Architecture Practical Application of Business Architecture
Practical Application of Business Architecture Enterprise Architects
 
Current State Analysis—More Important than You Think for Building a Technolog...
Current State Analysis—More Important than You Think for Building a Technolog...Current State Analysis—More Important than You Think for Building a Technolog...
Current State Analysis—More Important than You Think for Building a Technolog...Dialexa
 
What is the Value of Mature Enterprise Architecture TOGAF
What is the Value of Mature Enterprise Architecture TOGAFWhat is the Value of Mature Enterprise Architecture TOGAF
What is the Value of Mature Enterprise Architecture TOGAFxavblai
 
Agile Analytics: A GQM Approach to Enterprise Metrics
Agile Analytics: A GQM Approach to Enterprise MetricsAgile Analytics: A GQM Approach to Enterprise Metrics
Agile Analytics: A GQM Approach to Enterprise MetricsLeadingAgile
 
Lean Business Architecture
Lean Business ArchitectureLean Business Architecture
Lean Business ArchitectureAndrew Blain
 
Scaled agile framework (SAFe) - adopting agile at enterprise scale
Scaled agile framework (SAFe) - adopting agile at enterprise scaleScaled agile framework (SAFe) - adopting agile at enterprise scale
Scaled agile framework (SAFe) - adopting agile at enterprise scaleVadim Mikhnevych
 

What's hot (13)

Architectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 Concept
Architectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 ConceptArchitectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 Concept
Architectural Design 1 Lectures by Dr. Yasser Mahgoub - Lecture 5 Concept
 
Commercial Roofing Proposal PowerPoint Presentation Slides
Commercial Roofing Proposal PowerPoint Presentation SlidesCommercial Roofing Proposal PowerPoint Presentation Slides
Commercial Roofing Proposal PowerPoint Presentation Slides
 
Practical Application of Business Architecture
Practical Application of Business Architecture Practical Application of Business Architecture
Practical Application of Business Architecture
 
Current State Analysis—More Important than You Think for Building a Technolog...
Current State Analysis—More Important than You Think for Building a Technolog...Current State Analysis—More Important than You Think for Building a Technolog...
Current State Analysis—More Important than You Think for Building a Technolog...
 
History of interior design
History of interior designHistory of interior design
History of interior design
 
What is the Value of Mature Enterprise Architecture TOGAF
What is the Value of Mature Enterprise Architecture TOGAFWhat is the Value of Mature Enterprise Architecture TOGAF
What is the Value of Mature Enterprise Architecture TOGAF
 
Agile Analytics: A GQM Approach to Enterprise Metrics
Agile Analytics: A GQM Approach to Enterprise MetricsAgile Analytics: A GQM Approach to Enterprise Metrics
Agile Analytics: A GQM Approach to Enterprise Metrics
 
Roman Aqueducts
Roman AqueductsRoman Aqueducts
Roman Aqueducts
 
Theory of Architecture
Theory  of ArchitectureTheory  of Architecture
Theory of Architecture
 
Lean Business Architecture
Lean Business ArchitectureLean Business Architecture
Lean Business Architecture
 
Scaled agile framework (SAFe) - adopting agile at enterprise scale
Scaled agile framework (SAFe) - adopting agile at enterprise scaleScaled agile framework (SAFe) - adopting agile at enterprise scale
Scaled agile framework (SAFe) - adopting agile at enterprise scale
 
Principle of architecture
Principle of architecturePrinciple of architecture
Principle of architecture
 
Agile Mindset
Agile MindsetAgile Mindset
Agile Mindset
 

Similar to Behaviour driven architecture

Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileKenAtIndeed
 
The GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scaleThe GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scaleDavid Cronin
 
React introduction
React introductionReact introduction
React introduction書廷 林
 
Co-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdfCo-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdfSimonedeGijt
 
Co-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdfCo-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdfSimonedeGijt
 
Serenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applicationsSerenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applicationsJan Molak
 
Progress of JavaScript Architecture
Progress of JavaScript ArchitectureProgress of JavaScript Architecture
Progress of JavaScript ArchitectureTonya Mork
 
Epistemological Problem of Application Security
Epistemological Problem of Application SecurityEpistemological Problem of Application Security
Epistemological Problem of Application SecurityJames Wickett
 
TechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research CompetitionTechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research CompetitionCatalyst
 
Co-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdfCo-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdfSimonedeGijt
 
NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020Milad Heydari
 
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...Sasa Djolic
 
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]Link-Assistant.Com
 
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Rendering strategies:  Measuring the devil's details in core web vitals - Jam...Rendering strategies:  Measuring the devil's details in core web vitals - Jam...
Rendering strategies: Measuring the devil's details in core web vitals - Jam...Jamie Indigo
 
Data Driven DevOps
Data Driven DevOpsData Driven DevOps
Data Driven DevOpsLeon Stigter
 
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]Mikhail Asavkin
 
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...indeedeng
 

Similar to Behaviour driven architecture (20)

Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
 
The GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scaleThe GE Design System and thoughts about craft at scale
The GE Design System and thoughts about craft at scale
 
React introduction
React introductionReact introduction
React introduction
 
Co-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdfCo-creating_UX_Software_DevoxxBE.pdf
Co-creating_UX_Software_DevoxxBE.pdf
 
Co-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdfCo-creating_UX_Software_VoxxedDaysIasi.pdf
Co-creating_UX_Software_VoxxedDaysIasi.pdf
 
Serenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applicationsSerenity/JS - next generation acceptance testing for modern web applications
Serenity/JS - next generation acceptance testing for modern web applications
 
Progress of JavaScript Architecture
Progress of JavaScript ArchitectureProgress of JavaScript Architecture
Progress of JavaScript Architecture
 
Epistemological Problem of Application Security
Epistemological Problem of Application SecurityEpistemological Problem of Application Security
Epistemological Problem of Application Security
 
Building Web Hack Interfaces
Building Web Hack InterfacesBuilding Web Hack Interfaces
Building Web Hack Interfaces
 
Going web native
Going web nativeGoing web native
Going web native
 
TechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research CompetitionTechSEO Boost 2019: Research Competition
TechSEO Boost 2019: Research Competition
 
Co-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdfCo-creating_UX_Software_JFALL.pdf
Co-creating_UX_Software_JFALL.pdf
 
NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020NextJS - Online Summit for Frontend Developers September 2020
NextJS - Online Summit for Frontend Developers September 2020
 
Web performance tuning
Web performance tuning Web performance tuning
Web performance tuning
 
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
Event-Driven Design (at O'Reilly Software Architecture conference, NYC, Feb 2...
 
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
 
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Rendering strategies:  Measuring the devil's details in core web vitals - Jam...Rendering strategies:  Measuring the devil's details in core web vitals - Jam...
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
 
Data Driven DevOps
Data Driven DevOpsData Driven DevOps
Data Driven DevOps
 
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
What makes a great engineer [Given at MusesCodeJs in Sydney 07.03.2020]
 
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
 

Recently uploaded

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
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
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
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
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
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
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
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
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
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
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
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
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
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
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
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
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

Behaviour driven architecture