►
From YouTube: Orchestrated end-to-end tests at GitLab - Part 1
Description
In this video, GitLab Senior Software Engineer in Test Sanad Liaquat talks about Orchestrated end-to-end tests and how to run them. He also discusses the code briefly especially the Test Scenarios, the Components and how gitlab-qa calls the Test Scenarios in the /qa directory of the GitLab project.
Deck: https://docs.google.com/presentation/d/15F7kUyHxGuudJoMzqytzw5L9ApiyzQ5aQ0apId7dVo8/edit?usp=sharing
This is the first video in a two part series. The second video can be found here: https://youtu.be/U8zCle_Up6I
A
Hi,
my
name
is
sanad,
I'm
a
software
engineer
in
test
at
gitlab.
In
this
video
I
talk
about
orchestrated
tests
and
how
to
run
them.
This
is
a
first
video
in
a
two-part
series
where
we'll
be
talking
about
orchestrated
tests
and
in
the
second
video
I'm
going
to
walk
you
through
writing
an
actual
orchestrated
entrant
test
scenario.
A
So,
let's
get
started
so
I've
made
some
assumptions
over
here
while
recording
this
video.
I
am
assuming
that
the
viewers
have
some
knowledge
about
the
gitlab
qa
framework
and
I'm
not
going
to
talk
about
the
basics,
also
I'm
assuming
that
there's
some
understanding
about
how
to
write
end-to-end
tests.
However,
if
you
came
here
looking
for
that
information,
I
have
some
links
for
you
for
where
to
get
started.
A
A
A
We
have
a
way
of
representing
these
elements
in
getlab
qa
project
and
we
represent
them
with
with
a
component.
We
have
a
component
class.
Each
component
class
represents
these
elements
that
talk
to
each
other
when,
when
the
tests
are
run,
so
a
component
may
or
may
not
have
an
associated
docker
container
so,
for
example,
the
staging
component,
it
only
runs
a
test
against
the
staging
environment.
A
So
if
the
staging
environment
is
a
live
environment,
so
we
don't
have
to
spin
up
a
gitlab
inside
a
container
for
for
that,
it
does
not
require
a
container.
However,
any
orchestrated
tests,
any
components
using
orchestrated
tests
do
spin
up
one
or
the
other
docker
containers.
A
The
most
interesting
method
over
here
that
I
want
to
talk
about
is
the
instance
method.
What
it
does
is
it
inside
prepare
it
pulls
the
docker
image
and
creates
the
network
if
it's
not
already
created
and
then
starts
the
docker
container
right,
there's
also
tear
down
over
here,
which
stops
the
stop
the
docker
container
and
removes
it.
A
Let's
also
look
at
the
git
lab
gitlab
component,
and
this,
as
you
would
already
have
guesses
responsible
for
running
the
gitlab
application
inside
a
docker
container.
A
A
That's
provided
for
with
the
tag
and
also
creates
a
network
if
it's
not
already
created
reconfigures
waits
for
the
instance
to
become
up
and
then
then,
once
the
instance
is
up.
A
If
you
need
to
run
any
commands
inside
the
docker
container.
That's
where
this
this
is.
This
happens
over
here
again,
there's
a
tier
down
where
it
would
stop
and
then
remove
the
container.
A
Next,
I
want
to
talk
about
test
scenario.
A
test
scenario
in
gitlab
qa
project
is
where
the
components
come
and
work
together
at
a
very
minimum.
A
test
scenario
would
have
just
the
specs
component.
The
specs
component
is
actually
responsible
for
running
the
test,
suite
from
the
git
from
the
qa
directory
in
the
gitlab
project.
A
You
need
to
provide
it
with
the
target
environment
where
you
want
to
run
the
run
the
test,
and
it
would
kick
off
with
us
against
that
environment,
and
you
would
also
need
to
provide
it
with
with
a
scenario
that
you
need
to
run.
There
are
basically
three
types
of
test
scenarios.
The
most
basic
one
would
have
just
one
component,
and
that
would
be
the
spec
specs
component.
A
The
next
level
is
where
we
would
have
two
components,
and
then
we
can
also
have
three
or
more
components
we'll
be
looking
at
an
example
for
each
of
these
three
types
of
components.
Next
so
test
instance,
any
is
our
example
of
the
most
basic
kind
of
a
test
scenario.
A
A
We
also
need
to
provide
it
with
a
release
which
it
will
use
to
pull
the
appropriate
qa
image
and
then
create
a
container
from
that
queue
image
and
run
the
tests
against
the
address
that
we
provide
here.
We
can
also
provide
our
spec
arguments,
so
this
is
an
example
of
how
the
command
would
look
like.
A
One
thing
I
wanted
to
point
out
here
is
that
here
we
are
set
providing
it
with
ee
release,
and
this
would
be
translated.
This
will
be
used
to
pull
the
gitlab
nightly
nightly
qa
image.
A
I've
pulled
it
from
the
documents
in
gitlab
qa
project,
the
wikitlab
qa
gm
will
spin
up
a
container
using
the
qa
image,
and
that
container
would
in
turn,
run
the
qa
scenario
that
we
provided
with
against
the
live
gitlab
instance
again.
We
provided
that
gitlab
instance
in
the
command.
Here,
let's
talk
about
it,
a
scenario
with
two
components:
an
example
of
such
a
such
a
test
scenario
is
test
instance
image.
It's
made
up
of
specs
component
and
the
gitlab
component,
and
we
need
to
provide
it
with
a
git
lab
release
and
based
on
that
release.
A
A
If
you
look
at
the
code,
the
gitlab
component
needs
a
release,
a
volume
and
a
network,
and
this
network
is
shared
with
network
and
the
release
are
shared
with
the
specs
component.
We
also
need
to
provide
the
specs
component
with
with
the
suite
again
as
previously
discussed
this
week
is
basically
a
test
scenario
inside
the
qa
directory
in
gitlab
project.
You
would
notice
that,
in
contrast
to
the
test
instance,
any
component
where
we
provided
the
address
from
the
command
line
over
here,
the
address
is
provided
from
the
from
the
gitlab
component.
A
Let's
look
at
the
architecture.
The
gitlab
qa
gem
would
spin
up
two
containers,
one
based
on
the
gitlab
qa
image
and
the
other,
based
on
the
gitlab
image,
where
the
gitlab
application
would
be
running.
The
gitlab
qa
container
would
run
the
qa
scenarios
against
the
gitlab
instance
inside
the
gitlab
container
for
a
test
scenario.
Example
that
has
three
components
we'll
be
looking
at
test:
integration
smtp
it's
made
of
made
up
of
three
components:
the
specs
component,
the
gitlab
component
and
the
email
hog.
A
A
A
Now,
a
point
to
note
here
is
that
we
are
setting
certain
omnibus
configuration
for
gitlab
container,
and
this
is
one
of
the
reasons
why
we
have
orchestrated
tests.
It
allows
us
to
spin
up
gitlab
with
certain
instance
level
settings
that
we
cannot
change
when
we
when
we
are
running
tests
against
a
live
environment
such
as
staging.
A
A
A
So
this
means
that
the
tests
would
call
test
integration,
smtp,
test
scenario
or
or
the
suite
inside,
of
the
qa
directory
in
the
gitlab
code
base
the
architecture
here
for
the
scenario
with
three
components:
it's
pretty
much
self-explanatory.
A
Let's
keep
going
through
it
when
to
write
orchestrated
tests
whenever
we
need
instance
level
settings
such
as
in
this
example.
I
have
here
where,
where
I
am
passing
omnibus
config
for
setting
up
github
omniock,
we
will
need
orchestration
also
when
we
need
to
test
integration
with
external
services
such
as
male
hog,
ldaps
ml
or
elastic
elastic
search
or
when,
whenever
you
need
multiple
instances
of
gitlab
such
as
geo,
you
know
that
you
have
you'd,
be
writing
orchestrated
tests.
A
A
A
A
A
Let's
first
look
at
the
docker
file
that
was
used
to
create
this.
This
image,
this
gitlab
qa
image
that
file
is
in
qa
directory,
so
we
are
in
the
gitlab
project,
we're
going
to
the
qa
directory
and
there's
a
docker
file
here.
The
thing
that
I
want
to
point
out
here
is
the
entry
point:
if
you
notice
that
it
has
been
test,
so
this
docker
file
bundles
the
entire
qa
directory
into
the
image
and
then
the
entry
point
point
provided
has
been
test.
Let's
look
at
bin
test
inside
qa
directory.
A
There
you
go
so
what
bin
test
does
is
that
it
executes
the
the
qa
script
and
passes
all
the
arguments
to
it.
What
does
the
qa
script
do?
It
uses
the
first
argument
passed
to
it,
converts
it
into
a
constant
and
calls
it
on
the
qa
scenario
module.