►
Description
In this session we try to tackle a issue where some feature specs are taking a long time by moving them to feature integration specs.
Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/282436
MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48074
A
Here
we
go
thanks
thanks
for
hopping
on
scott.
Here
is
the
issue
at
hand.
I'm
gonna
share
my
screen
here
so,
and
the
efforts
of
being
a
good
software
developer
citizen
was
working
on
refactoring
this
bit
and
the
ide
am
I
even
in
the
right
thing.
Oh,
let
me
just
copy.
A
A
Previously,
for
a
long
time,
we
had
in
our
testing
pyramid
unit
tests,
feature
specs
and
that
was
kind
of
it,
but
now
we
have
introduced
this
middle
layer
front
end
integration
specs.
So
the
idea
here
is
we
we
have
taken
our
whole
front.
End
chunk
just
the
things
in
javascript,
so
not
even
the
hammel
just
the
things
in
javascript,
so
we
want
to
test
that
chunk.
So
we
mock
out
the
back
end
and
we
use
fixtures
for
api
responses,
not
for
html
and
things
like
that.
We
use
fixtures
for
api
responses.
A
We
mock
out
the
back
end
and
we
run
the
entry
point
of
our
thing,
we're
trying
to
test
and
so
we're
going
to
try
to
rewrite
some
of
these
tests
in
the
feature
spec
world.
What
do
you
think?
So?
It's
good
okay,
so
we're
actually
not
work
off
master,
because
this
is
about
to
be
merged.
This,
mr
that
himacha,
is
working
on
which
I
think
changes
a
little
bit
of
this
for
the
web,
ide,
specifically
okay,
so
I'm
just
gonna
work
on
top
of
that.
A
Okay,
oh
yeah!
I
was
doing
something
silly,
so
let
me
let
me
just
reset
with
this
branch.
A
Okay
and
it's
taking
a
while
all
right
here,
we
go
okay
and
then
let
me
check
out
a
new
branch
for
this
issue.
A
Boom
move
feature
specs
to
fe
integration,
specs,
brilliant,
all
right.
So,
let's,
let's
check
it
out
the
front-end
integration.
Folder.
Have
you
seen
the
folder
at
all
before
I
have
I
haven't
exported,
though?
Okay,
so
definitely
want
your
feedback
on
what
you
think
is
helpful
or
not.
So
we
have
another
folder
for
test
helpers,
which
includes
the
mock
server
and
something
fancy
snapshot.
Serializing
stuff,
this
for
a
long
time
was
our
only
integration,
spec
and
just
reading
it.
A
You
could
see
that
this
is
at
a
different
level
than
our
unit
tests
like
this
isn't
actually
creating
the
component.
This
is
doing.
This
is
mounting
this
thing
and
then
we
we
create
the
file,
and
this
this
is
a
helper
that
encapsulates
those
use
cases
or
like
those
user
interactions.
So
this
is
doing
all
that
it
takes
to
create
the
file
based
on
the
parameters
we
send
it
like
we're.
A
Looking
for
this
element,
we're
going
to
type
this
into
the
modal
like
all
of
that
cool,
so
the
goal
is
we're
just
like
trying
to
write
these
tests
as
if
we
weren't
developers
almost
like
writing
it.
Like
here's
the
requirements,
you
know,
user,
creates
a
file
with
this
user
deletes
this
file
we
do
commit,
and
then
we
can
reference
our
mock
server
and
our
mock
server.
This
is
a
really
really
cool
library
we're
using
for
this
mock
server.
A
It
is
called
mirage
and
it
lets
us
express
an
api
similar
to
express,
but
it
also
keeps
track
of
this
like
internal
database
and
that's
what
we're
that's.
What
we're
kicking
off
of
all
of
our
fixtures
is
this.
A
All
of
these
are
our
fixtures
api
responses
that
we
get
sorry
so
for
this
mock
server.
We
initialize
this
sort
of
database
that
all
of
our
mock
endpoints
are
just
going
to
read
from
and
respond
with,
and
these
database
is
comes
from
test
helpers
fixtures
and
these
are
snapshots
of
api
responses
from
the
real
backend.
A
Does
that
kind
of
make
sense?
It
does
okay
so
like,
for
example,
and
then
we
register
all
of
our
routes
here
and
so
like.
If
I
go
to
my
repository
to
find
a
file,
we're
just
going
to
implement
we're
going
to
try
to
keep
this
as
small
as
possible,
because
this
is
the
downside
to
this-
is
that
we're
we're
having
to
mock
out
the
back
end,
which
isn't
great,
especially
for
the
ide,
which
makes
like
15
requests?
A
We
don't
want
to
just
mock
each
one
of
those
requests,
so
we're
trying
to
just
mock
the
replace
the
back
end
with
something
that
is
very,
very
light,
but
it's
there's
still
a
little
bit
of
duplication
there
that
isn't
great,
but
that's
about
it
and
I'm
so
stoked
to
show
you
one
of
the
coolest
things
about
this,
though,
and
I've
been
talking
about
it
for
a
while.
A
But
let's
let's
see
if
I
can
show
you
one
of
the
coolest
things
about
it,
so
I'm
going
to
restart
the
jdk
here
and
I
am
actually
going
to
create
a
file
called
temp
and
bear
with
me.
This
is
how
I've
been
working
with
this.
I'm
gonna
create
a
file
called
temp
and
it's
gonna
export
a
default
function
and
it's
going
to
import
from
test
helpers.
A
Mock
server
use
check
this
out
what
I
can
do,
because
I'm
because
I'm
mocking
out
the
back
end,
I
can
go
to
my
ide
page
and
I
can
import
my
test
case
and
I
can
actually
see
it
run
if
that
kind
of
makes
sense.
So
let
me
in.
A
Oh
yeah,
that's
what's
so
cool
about
this!
That's
what
mirage
like
really
sells!
You
on
is
like
with
this
fake
back
end.
I
can
be
working
as
if
I
had
a
real
back
end
and
testing
things
out
visually
and
then
just
replace
it,
so
you
could
do
kind
of
the
same
thing
for
tasks
which
is
really
neat.
Let
me
see
if
I
can.
I
forgot
the
config
for
oh
yeah.
I
can
go
to
test
helpers
here,
so
I
can
go
to
import
run
test
from
so
test
helpers
we'll
go
to
that
test,
helper
directory.
A
Yeah,
it's
it's
complaining
about
eslint
stuff,
but
that's
not
important.
So
after
I
run
all
this,
then
I'm
gonna
run
my
test,
so
I'm
changing
the
actual
production
code,
which
is
kind
of
weird,
but
I
don't
know
better
way
to
do
this,
but
now
I
can
say:
hey
running
the
test,
see
it
when
it
when
it's
ready
to
go
I'll,
open
up
the
the
route
that
this
is
expecting
and
you'll
see
mirage
kick
in.
A
It's
really
helpful
at
it's
really
helpful
when
you're
like
building
the
actions,
so
that's
one
way
that
we've
kind
of
decided
to
to
design
this
is
creating
these
helpers.
That,
let
me
write,
really
simple
use
cases
like
create
file,
and
so
this
is
really
helpful
to
help
me
build
these
actions,
these
actions
out
and
then
once
I
have
the
actions
I
need
then
I'll
kind
of
switch
over
and
just
start
writing
the
test
and
the
front-end
integration
thing.
Do
you
have
any
feelings
right
now
or.
C
Are
you
are
you
just
along
for
the
ride?
No,
no,
I'm
just
kind
of
like
I'm
trying
to
digest.
This
is
a
lot
I
do.
I
am
curious
like
we're
putting
so
the
front-end
integrations.
Tests
are
like
in
this
middle
portion
of
the
testing
pyramid,
like
you
were
saying
earlier,
so
for
the
sake
of
non-duplication
of
coverage.
C
How
do
you
see
like
okay?
So
let's
say
we
replace.
We
replace
the
file
that
we're
trying
to
replace
in
the
our
spec
right
have
front-end
integration
specs.
Then?
How
would
you
think
about
like
what
integration
spike
would
you
want,
because
we're
covering
quite
a
few
cases
here?
We're
just
mocking
the
back
end?
So
then
you
could
make
the
argument,
like
that's
a
that's
a
bit
superfluous.
To
do
the
same
thing
just
in
our
spec.
You
know.
A
Yeah
you
bring
up
a
really
really
good
point
so
where
front-end
integration
specs
are
really
valuable,
is
when
we're
really
just
testing
front-end
com
interactions
and
behavior
and
for
the
ide
that's
like
95
of
it.
None
of
these
are
doing
any
commits.
It's
just
clicking
buttons.
Did
the
front
end?
Do
this
update
and
none
of
it
is
really
hidden.
A
A
lot
of
these
aren't
really
hitting
the
back
end
other
than
getting
file
content,
which
himacha
actually
up
implemented,
which
is
why
I,
which
is
why
I
wanted
to
work
off
this
branch,
so
there's
not
going
to
be
any
loss
of
coverage
by
moving
us
over
to
front-end
integration,
because
this
is
only
top
only
targeting
front-end
stuff.
A
As
far
as
coverage
goes,
but
on
a
side
note
of
that
one
rule
of
thumb
that
I've
been
following,
I
really
like
following
martin
fowler's
stuff,
and
he
says
for
test
duplication
in
the
pyramid.
B
A
That
you,
you
know
you
need
to
have
just
unit
tests,
but
it
is
saying
you
want
to
try
to
push
him
as
far
down
as
you
can,
because
clearly
running
things
at
end
to
end
is
very
expensive
right.
It's
not
just
line
coverage,
but
it's
value
coverage
that
we're
also
really
interested
in.
A
Do
you
know
what
I
mean
totally
so
let
me
see
if
I
can.
Let
me
see
if
oh
yeah,
this
is
that
this
is
that
I
think
okay,
so
this
is
not
oh
beautiful,
yeah,
yeah
yeah.
A
Oh,
it's!
Not!
Okay!
All
right!
Here's
downside
to
all
this.
Here's
something
that
we
gotta
fix,
but
because
test
fixtures
are
actually
loaded
in
a
module
right
now.
Maybe
I
can
fix
this
right
now,
but
because
test
fixtures
are
actually
loaded
in
the
module
you
have
to
have
all
the
fixtures
for
any
of
them
to
run
because
we
set
up
the
whole
database.
You
know
what
I'm
saying.
A
A
So
now
I
can't
run
anything
and
it's
all
going
to
blow
up,
which
is
not
great.
So
what
what
would
be
ideal
is
that
we
do
some
sort
of
defaults
if
the
fixture
isn't.
If
you
can't
find
the
fixture,
we
do
some
sort
of
default,
so
you
can
still
move
forward.
If
I'm
not
using
that
slice,
do
you
want
to
see,
if
that's
possible,
sure,
okay,
let's
try
it
out?
So
what
is
this?
A
A
A
A
Probably
the
fastest
thing
would
just
be
to
run
the
fixture,
so
let
me
go
ahead
and
do
that
I'm
looking
for
so
this
alias
is
a
jest
daly's
that
and
it's
also
webpack
alias.
I
think
that
looks
at
here.
We
go.
Here's
the
one
I
need
to
run.
It's.
A
Back,
let's
look
at
test
fixtures
real
fast,
while
we're
here.
A
Yeah,
so
this
is
a
this
is
a
jest,
alias,
that's
looking
actually
at
your
temp
directory
for
what
fixtures
you
have
and
it's
going
to
try
to
resolve
those
modules,
so
we
can
just
do
require
rather
than
having
to
do
reading
of
files
and
things
which
causes
issues
and
the
reason
this
is
important
is.
A
A
Ideally,
we
could
just
require
it
as
a
text,
but
I
see
that
that
might
not
be.
That
might
not
be
possible.
A
So
here's
how
I'm
gonna
do
this
yeah,
because
all
right,
one
of
the
goals
with
this
environment
is
being
able
to
run
it
and
see
it
like
this.
So
I'm
gonna
do
something
really
crazy
go
nuts
and
please
stop
me.
Please
stop
me.
A
A
A
A
A
Yeah,
so
it's
clearly
not
very
obvious
that
read
file
sync
is
kind
of
what
we're
we
do
want
to
try
to
avoid
that,
because
technically
we
could
run
these
in
the
webpack
environment.
We
want
to
try
to
preserve
that,
but
clearly.
B
A
Not
obvious
here
because
we
do
run
them
in
jess,
so
I'm
going
to
think
about
how
we
want
to
preserve
that.
C
Well,
this
I
mean
we
can't
start
moving
like
we
need
this
aspect,
so
we're
okay,
let's
take
a
step
back
so
who
might
choose
mr
introduce
new
fixtures?
Those
new
fixtures
are
causing
problems.
Those
problems
need
to
be
solved
by
doing
what
we're
doing
now.
C
A
C
A
A
A
Let's
try
this
off
to
a
good
start.
I
know
let's
try
to
put
a
pause
here.
These
are
functions,
so
I
want
to
return
a
function.
A
A
Think,
okay,
gosh
and
I
wish
I
could
like
figure
out.
C
Well,
but
with
default
isn't
being
called
twice,
it's
being
called
once
so
then
it
would
be
you
would
want
to.
It
would
just
be
with
the
fault,
equals
fn
default
value
and
then
try
well.
So
then
we
wouldn't
even
be
doing
the
try
catch
anymore.
We
would
just
return
fn
right
because
you're
in
I
don't
think
you
want
to
return
the
invocation
of
the
function,
that's
being.
A
About
how
about
this?
What
do
you
we're
just
now
we're
just
having
fun
how
about
this?
What
if
it
looked
like
this,
let
me
know
what
you
think
if
I
did
with
default
default
content.
A
C
A
Completely
lost
my
mind
now,
so,
let's,
yes,
let's
please
keep
moving.
Please!
Please
stop
me
scott
before
it
gets
really
bad
okay
boom.
Do
you
see
we're
running
this
test
and
look
at
mirage
console
logged
all
of
these
endpoints
that
we
had
so
these
aren't.
This
was
not
hitting
the
real
backend
cool
webpack.
These
are
hitting
the
fake
back
end,
which
is
very
exciting,
and
so,
if
I
open
up
readme,
I
should
get
bananas.
A
D
A
A
Oh
yeah,
this
this
is
probably
going
to
be.
I
want
to
wait
id
helper,
open
file.
A
Readme.Md
so
now
to
just
double
check
it
I'm
going
to
refresh
my
page
and
see
where
am
I
at
now?
Do
you
know
what
I
mean?
Well,
you
should
refresh
at
mat
you
shouldn't
be
at
readme
right.
You
should
be
a
roof.
You
are
100
correct.
Thank
you
rails,
so
downside
to
all
this.
I
don't
really
need
the
rails
back
end,
but
rails
is
I
mean
it's
still
kind
of
all
tied
to
that,
because
we're
hitting
some
sort
of
server.
That's
returning
us
these
assets.
I
don't
need
that
I've.
A
I
don't
know
what
the
what
a
good
fix
for
that
kind
of
thing
is,
but
that's
that's
a
little
bit.
That's
the
only
thing
really
contributing
to
the
slowness.
I
think
can't
find
it
what's.
C
A
Oh,
this
is
a
dependency
cycle.
It's
that's
shown
up
here
because
we're
emitting
the
ide
okay.
Yes,
I'm
going
to
comment
this
out
for
right
now
and
we
will
fix
this
later,
but
that's
probably
why
I
think
it
wasn't
showing
up
because
the
ide
was
importing
this
test
helper.
So
I
could
run
things
and
see
it
visually,
but
then
in
my
helper
I
was
importing
the
ide
mounting
thing.
We
don't
want
to
do
that.
You're.
A
C
A
A
A
Okay,
oh
flip
flops.
I
remember
this
okay
yeah
this
was
this
was
a
little
wild.
Are
you?
Are
you
ready
to
go?
You
thought
we
were
down
the
rabbit
hole,
but
oh,
oh
man,
scott!
So
to
set
the
editor
position,
we
need
to
interface
with
monaco
and
because
there's
not
like
this
easy
user
interaction.
For
me,
just
like
hey
click
on
this
position,.
A
The
best
thing
to
do
is
just
call
some
sort
of
function
to
monaco
to
do
this.
Okay,
all
of
that's
great,
but
that's
not
possible,
but
monaco
doesn't
expose
this
test.
Editor
thing
where,
where
in
the
world
is
that
coming
from
good
question
scott,
so
those
are
like
completely
out
of
scope
and
in
a
hidden
scope
and
the
only
way
to
expose
it.
B
A
But
this
is
so
the
way
that
we
did
it
here
was
to
save
this
monaco
editor
and
to
always
be
watching
for
that
and
then
use
it,
and
we
can
do
that,
so
we
can
create
in
our
ide
helper.
Here
we
can
create
something
that
starts
saving
off
a
monaco
editor
reference.
A
And
start
using
it,
we
could
do
it,
maybe
in
a
less
of
a
globally
way,
because
we
are
in
javascript
where
here
we
were
in
our
specs,
so
we
had
to
write
to
a
global
file.
Maybe
over
here
we
could
just
expose
a
helper
for
like
on
editor
created,
and
I
pass
a
call
back
and
I
can
just
save
it
to
a
local
scope.
Do
you
think
that
would
be
cool
yeah?
A
A
A
Bring
up
a
good
point
on
medica
monaco
editor
created:
this
is
the
magic
window.
Monaco
on
on
monaco
did
create
editor.
This
is
the
magic
we're
just
going
to
call
fal
fault
callback.
A
And
then
do
ide
helper
on
monaco
did
create
editor.
A
Now
all
the
all
the
functional
people
are
going
to
hate
me
right
now.
So
what
do
you
think
of
that
thing?
Yeah,
you
think
it's
cool.
B
A
So
then,
what
we're
going
to
do
over
here?
We
do
a
id
set
out
of
position.
So
I'll
add
a
new
helper
thing
here
for
set
monaco
editor
position
and
I'll
do
something
crazy.
Where
I
take
the
editor
actually
and.
C
A
I
probably
don't
need
to
expand
this.
I
was
kind
of
doing
it
for
like
code
intelligence's
sake,
expanding
it
like
this,
so
I
could
see
it
like
that.
You
know
what
I
mean
and
you
might
be
able
to
do
like
comments
and
stuff,
but
this
this
is
also
compile
time
happy.
So
then
I
was
gonna.
Do
set
monaco
editor
position,
it
takes
oh,
and
this
is
part
of
my
id
helper
thing.
It
takes
the
current
monaco
editor.
B
C
A
Okay,
I'll
I'll
tell
you.
Let
me
see
if
I
can
do
this,
though,
or
we're
going
to
the
fourth
position.
Let's
see
if
this
works
and
then
I
have
an
interesting
idea
to
refactor,
which
I
think
you'll
actually
like
and
you'll,
be
like.
Oh
we'll
see.
A
C
Because
so,
okay,
so
I'm
a
little
confused
because
we're
calling
we're
passing
a
function.
That's
just
saying
like
assign.
Oh
on
I
don't
know
the
the
api
for
on
did
create
editor.
Does
it?
Does
it
give
you
an
argument
that
yeah
that's.
A
D
A
B
A
This
thing
let
current
editor
equals
null.
A
A
A
A
D
A
Let's
see
if
it
works,
would
you
say
the
line
number
two
two,
I
said
like
column,
four
okay,
so
I'm
gonna
make
my
default.
Bananas
have
more
to
it.
Oh,
what
what's
going
on
bananas.
B
C
A
I
never
got
my
let's.
Let's
add
some
console
logs,
so
we
can
be
aware
of
the
timing.
That's
happening
here
so
console.log
id
helper.
A
You
know
this
would
be
a
really
cool
thing
that,
for
us
to
do
more,
is
rather
than
writing
these
logs,
removing
them
and
all
that
stuff
like
what,
if
we
just
kept
caught
like
kept
locks,
but
had
it
in
a
way
that
they
didn't
show
up
in
production
like
that
would
be
really
nice.
I
feel
like
that
would
be
nice
anyways.
A
Do
this
again,
I'm
pretty
sure
I
need
to
wait
for
something
and
that's
why
this
is.
Oh,
you
had
access
to
it
before.
A
You
had
access
to,
but
I
was
in
our
spec
world
and
our
spec
does
a
lot
of
waiting.
Oh,
yes,
you
were
saying
I
seriously
okay,
so
let
me
see
what
happened
what
I
was
really
waiting
like
yeah.
I
was
waiting
for
a
lot.
I
think
which
is
not
the
case
here
and
I
I
think
I
have
something
I
could
wait
for.
I
just
need
to.
A
A
A
A
Well,
yeah,
because
I
kind
of
want
to
I
just
want
to
make
sure
I
have
the
most
recent
current
editor,
because
I
what
I'm
seeing
happen
in
the
future.
What
I
was
thinking
is
like
okay,
what
if
this
was
a
promise-
and
I
waited-
I
waited
for
the
current
editor
and
then
set
its
position,
but
I
I
know
I'm
going
to
end
up
having
more
of
these.
You
know,
so
I
really
just
need,
what's
the
most
recent
one,
but
like
it's
got,
it's
got
to
be
ready,
so
I
have.
A
I
have
an
idea,
maybe
to
just
make
this
more
explicit
rep.
There
might
be
ways
to
make
this
better,
but
what,
if
we
had
a
function,
rather
than
making
set
position
async?
A
And
yeah
yeah
and
I
can
actually
just
add
another
one
of
these-
that
should
work
right.
A
B
A
This
might
be
the
easiest
way
right
now,
then
it
does
bring
the
question
like.
Why
am
I
keeping
track
of
the
state
thing,
but
it
might
end
up
being
nice.
I
don't
know,
let's
try
it
out
await
editor,
wait
for
editor.
D
A
A
A
Boom
boom
one
four
woohoo,
so
it
should
kind
of
work
kind
of
so
we
should
be
able
to
write
a
whole
test
case
for
that
which
is
exciting.
So
that's
one,
that's
all
the
actions,
and
so
the
reason
I
use
this
visual
thing.
Just
to
reiterate,
I
don't
do
expectations
here
because
that's
not
going
to
be
exposed
in
webpack
world.
That's
just
a
just
thing,
but
I
use
it
to
make
sure
are
my
actions.
Do
they
do
what
I
think
they
are
going
to
do?
A
You
know
what
I
mean
so
for
this
case,
I've
done
all
my
actions.
I've
opened
the
file.
I
set
the
editor
position.
Let
me
see
if
I
can
do
the
rename
file
now,
because
that's
another
action
that's
over
here,
so
I'm
just
working
on
this
temp
file
just
double
checking.
I
could
do
these
actions
and
I
can
just
write
my
tests.
Does
that
seem
helpful
or
does
it
seem
crazy
to
you
very
helpful
helper?
A
A
Do
you
know,
do
you
know
you
haven't
had
breakfast
yet
no
ma'am,
do
you
know
whole30?
C
A
My
I've
done
it
once
and
my
wife
has
done
it
a
couple
of
times.
She
just
finished
the
whole
30..
Oh
nice
and
she's
done
it.
She
kind
of
already
knows
what
she's
sensitive
to
she
kind
of.
Does
it
to
just
reset
herself,
but
something
tells
me
she's,
she's,
eager
about
making
all
these
delicious
sandwiches.
Now
that.
A
For
30
days,
she's
she's
really
disciplined,
so
it's
not
like
she
goes
overboard,
but
I
know
if
I
was
in
her
shoes,
I'm
the
kind
of
person.
That's
like
okay,
I've
been
eating
good.
I
guess
that
means
it's
pizza
and
ice
cream
day.
C
So,
like
renaming
so
then
you
have
like
you:
have
the
mock
server
has
like
a
post
or
something
that
you're
just
gonna,
be
like
I'm
gonna
pass,
I'm
gonna
pass
the
new
name
to
the
thing,
and
then
it's
gonna
return
that
name
right.
It's
like.
A
Yeah,
so
we
could
do
that,
but
just
keep
in
mind
too
there's
a
lot
of
context
here
with
the
ide
there's
like
no
calls
to
the
back
end.
When
I
rename
a
file,
the
only
call
the
backing
that
happens
is
when
I
finally
do
my
commit,
but
there's
so
much
fun
and
stuff,
so
that
these
front-end
integrations
tests
are
so
valuable.
A
C
A
Hopefully,
it's
not
a
real
bug
and
it
could
be.
That
would
be
unfortunate
yeah.
It
could
be
a
real
bug.
Let's
see,
let's
see
we're
coming
close
to
time,
but
I
think
this
is
helpful,
probably
as
it
was,
but
we
want
to
rename
a
file.
We're
gonna
have
a
path
and
a
new
path.
A
We
can
follow
a
little
bit
along
to
how
we
were
deleting
a
file
which
meant
we
were
clicking
the
a
certain
file
row
action
after
traversing
to
it.
So
I
think
we
can
kind
of
do
the
same
thing,
so
I
can
do.
A
A
Yeah
classes
are
not
the
answer
that
I
do
know.
C
D
C
B
A
Let's
see
if
this
works
so
like
you
see
how
what
a
clickfunnel
action
actually.
A
A
So
this
is
the
next.
This
is
for
this
test
after
you
do
a
rename.
This
is
the
behavior
that
it
does
for
the
editor,
so
we're
just
preserving
that
readme's.
A
Okay
and
let's,
let's
redo
this,
I'm
really
concerned
about
the
console
air
that
showed
up,
though,
that
that
made
me
nervous.
A
A
A
Yeah,
so
here's
the
value
so
maybe
instead
of
find
and
set
file
name.
Maybe
we
should
call
this.
What
do
you
think
of
calling
it
fill
file?
Name.
D
C
But
we
have,
there
should
probably
be
a
fill.
You
think.
A
fill
is
good
and
a
submit
right
because
then,
like
we're
gonna
have
to
for
future
stuff
in
the
id
we're
gonna
have
to
fill
other
fields.
We're
gonna
have
to
submit
other
things,
and
then
you
can
just
pass
like
like
a
reference
to
the
button
or
whatever
or
like.
A
A
Call
it
I'll
call
it
phil
I'll
call.
It
filf
right
now
create
file,
because
what
what
the
only
thing
different
between
the
our
old
create
modal
is
the
submit
text
and
I'm
going
to
get
rid
of
this
thing
and
now
I'm
getting
some
errors,
because
this
is
now
called
fill
file.
Name
modal.
A
C
Check
the
web
id
it
lets
you
delete,
the
file,
doesn't
throw
an
error,
but
it
doesn't
warn
you
it
just
lets.
You
delete
the
file.
Oh.
C
A
A
Maybe
I
can
oh
gosh,
I
don't
know
so
it's
clarify
it's
throwing
an
error,
not
letting
me
submit
that
because
testing
library,
you
have
to
uniquely
identify
an
element
which
is
good
like
that's.
I
accept
it.
C
So
so
for
our
spec,
we
have:
what
is
it
data
qa,
selector.
A
Well,
we'll
use
so
the
qa
selector
should
only
be
used
for
qa
tests,
but
we'll
use
like-
and
I
could
use
a
test
id
here,
but
it's
kind
of
nice
looking
at
the
by
the
text
name,
but
I
could
use
a
test
id.
I
was
kind
of
thinking
of
passing
this
thing.
This
ide
new
entry,
like
looking
for
that
and
passing
that
as
like
the
container.
B
A
So
let
me
see
if
I
can
do
that.
Let
me
see
if
I
can
do
something
like
modal
equals.
A
A
Get
by
text
and
that
allows
me
to
pass
in
a
parent
find
by
test
id
yeah,
so
I
can
do
from
the
modal
here
we
go
and
then
get
by
text
from
the
modal.
Here
we
go.
Let
me
try.
Let's
try
that
out,
and
then
I
know
that
it's
I
know
that
it's
time,
but
I
think
we
might
have
created
all
our
actions.
So
then
I
just
just
like
writing.
Regular
just
specs.
A
I
just
start
running
it
and
composing
the
actions
and
with
assertions
you
do
assertions
on
the
dom
yeah
yeah,
so
use
yep,
we'll
use,
and
I
can
show
what
some
of
those
look
like,
and
I
think
oh
gosh
should
not
work
again.
What's
wrong
with
you
expect
the
container
to
be
an
element
got
no.
A
C
Wait
wait,
wait,
query
selector,
query,
selector
should
be
live
right.
There's
like
yeah.
A
A
A
Oh
wait
find
my
test
id
ide
new
entry
or
something
see
if
it
works
and
then
that'll
work.
So
let's
try
that
out
and
then
we
can.
We
can
evaluate
whether
this
was
successful
or
or
not.
A
What
are
your,
what
are
your
feelings
about
about
this?
What
are
some
things
you
think
could
be
better
or
some
low-hanging
fruit.
C
I
thought
it
was
great,
I
think
it's
really.
I
think
it's
really
awesome.
I
have
I'm
like
I
said
I'm
along
for
the
ride.
A
C
A
A
I
wish
I
wish
it
was
flipped
like
I
wish
it
just.
Let
me
pass
in
the
container
as
the
second
argument
so
that
but
anyways
I'm
now
getting
picky
asking
for
too
much
scott.
A
A
It's
finding
multiple
elements
with
the
text
button
because
editor
is
also
called
rename
file.
Oh,
come
on.
A
A
Have
you
used?
Have
you
used
the
testing
library,
a
lot
which
one
you
can
say
that
it
has
to
match
a
button
like.
C
A
A
Name,
I'm
gonna
have
to
dive
into
it.
Hopefully
this
this
could
be
a
production
issue
or
not.
A
I
kind
of
wonder
if
we're
like
pulling
for
something
now
for
some
reason,
and
this
is
causing
something
to
blow
up
so
and
maybe
that's
just
something:
we've
added
just
to
our
test
environment
want
to
dive
into
it.
If
you
want
to
dive
into
it
with
me,
I'm
happy
to
do
that
or
if
you
I
actually
have
to
run
there,
you
go
thanks.
Scott
appreciate
hopping
on,
I
think
always
50.
There
awesome.
I
appreciate
it
ma'am
I'll
catch.
You
later,
man
see
ya
bye.