►
Description
In this session we try to debug a failing feature spec of an MR that attempts to replace jQuery scrolling with DOM based scrolling.
MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/43167
Test: `spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb`
A
And
I'm
gonna
share
my
screen,
but
before
I
do
that,
so
I
don't
have
to
add
anything.
Let
me
just
cancel
everything.
That's
open
on
my
browser
tab,
which
is
usually
personal,
email,
stuff,
sometimes
all
right.
Okay,
I
was
doing
something
earlier,
but
you
sent
a
link
in
our
chat
tim
about.
A
A
B
So
I
had
some
time
last
week
and
started
picking
it
up
and
the
main
thing
that
I
did
was
fix
all
the
jquery
think
two
animation
stuff,
so
that
is
all
gone
by
now
and
then
I
look
what
is
still
missing
to
move
to
check
very
slim,
because
this
is
definitely,
I
think,
it's
pretty
percent
smaller
than
actual
jquery
yeah.
So
I
saw
this,
mr
from
my
team
that
he
started
to
move
away.
B
They
just
did
basically
the
move
and
I
now
started
fixing
specs
and
I
also
rewrote
because
what
we
are
doing
right
now.
We
are
imitating
browser
behavior
with
the
scroll
to
element
and
I'm
now
using
scroll
into
view
and
by
from
the
actual
classic
javascript
api.
I
want
the
element
only
if
we
are
having
an
offset
set
to
the
function,
then
we
are
using
still
the
measurements
that
we
have
in
place
and
almost
everything
speaks
apart
from
one
aspect:
that's
failing
at
the
moment.
A
B
And
I
tried
so
many
times
to
fix
this.
It
seems
my
gut
feeling
says
a
little
bit
in
the
direction.
Oh,
no
and
now
more
is
failing.
There
are
more
chests
since
I
moved
just
today
away
from
the
old
implementation,
because
I
said
now,
perhaps
it's
simply
due
to
the
fact
that
we
are
trying
to
calculate
all
the
time
which
definitely
with
old
jquery.
We
are
trying
to
calculate
so.
There
are
also
some
a
couple
of
chest
stacks,
but
they
are
failing.
Clearly,
the
main
stuff
is
the
rsp
okay.
A
I'm
gonna
check
this
out
locally
becomes
the
interesting
point.
It
works
on
my
machine.
A
C
A
A
D
A
D
A
Yeah
I
can,
I
can
bump
it
up.
Oh
man,
oh
man,
okay,
we'll
try
this
out.
This
might
be
too
big,
but
all
right,
I've
checked
it
out.
I'm
gonna
make
sure
I'm
on
the
the
latest
one.
But
then
I'm
gonna
do
my
my
thing.
So
I
can
see
the
changes
of
the
mr
and
status
okay
and
you
send
a
link
to
the
failing
r
specs,
while
that's
loading,
here's
the
failing
r
spec.
Oh,
my
goodness,.
D
B
B
A
The
file
file
holder
first
of
type
discussion,
notes
timeline
entry,
yeah,
let's,
let's
jump
into
it.
Okay,
here
we
are.
I
can
cancel
this.
I
am
going
to
do
this,
so
you
can
see
the
changes
in
the
mr
over
here,
but
this
is
the
file
that
it's
failing
on.
A
Oh
no,
that's
a
pending
one!
It's
this
one
right
here:
okay,
exactly.
A
And
it's
86
all
right,
so
I'm
going
to
try
to
run
this
r
spec
locally.
While
we
think
about
this.
B
Yeah
and
that's
exactly
what
there
I
already
tried
two
times:
wait
for
all
requests
with
expect
to
have
selector
in
between
yeah.
A
D
Yeah
because
I
I've
been
told
that
it's
it's
a
bit
faster
or
more
less
reliable
if
you
execute
spring
server
somewhere
else
and
then
and
then
use
your
comment
right,
oh
really!
Well,.
A
A
B
A
First
of
type
obscured
true,
so
it's
not
visible
got
it.
Okay,
obscured
false,
got
it.
Okay
and
our
main
action
is.
A
We
just
visit.
Oh,
we
clink
click,
this
link,
oh
and
then
we
refresh
god,
I
got.
I
got
it:
okay,
okay,.
D
Actually
obscured
checks
that
it's
in
the
center
of
the
viewport
and
not
visible
at
the
same
time.
So
this
is
this
is
a
complete
thing,
obscure
the
checks
one
again,
if
the
element
the
element
is
currently
in
the
viewport,
so
if
it's
clickable
but
not
visible
according
to
the
there
will
be
dock.
Well,
that's
that's
weird!
D
B
A
So
gdk
is
starting.
It's
already
started
now,
I'm
just
pinging
gitlab
to
try
to
run.
You
said
I
should
do
this
without
spring
nico.
D
A
Maybe
it's
doing
stuff,
I
think
it
may
be
start.
Do
you
think?
Is
it
server
or
do
you
think
it's
start?
It
might
be
start,
but
anyways,
I'm
just
gonna
run
because
it's
what
I
usually
do,
but
while
that's
also
going,
we
can
also
check
it
out
in
prod
once
this
thing
is
or
not
pro
but
and
the
actual
application.
Once
this
thing
finishes.
Oh
here
we
go
great.
A
A
But
man
be
unfortunate.
This
is
also
like
a
browser
version
thing.
So
what's
what's
the
main
change
that
happened,
you
said
we
were
doing
jquery
scroll
to,
but
now
we're
doing
scroll
into
view
and
that's
the
dom
api.
B
E
B
Jquery
scroll
to
and
then
it
was
using
the
windows
scroll
to,
and
I
basically
now
extended
it
to
also
you
scroll
into
view
so
that
it's
it
should
be
safer
because
then
the
browser
takes
over
all
that.
If
you
take
a
look
at
all
that
is
happening
on
calculating
which
bar
is
using,
how
much
space
is
so
that's.
The
main
change
is
just
now
replacing
jquery
scroll
to
in
all
instances.
A
A
B
A
Yeah
that
makes
sense
well
this.
This
is
going
to
finish
one
day,
but
let's,
let's
check
it
out
manually
here.
A
A
Yeah
this
one:
okay,
let's
go
for
it,
so
you
need
two
fire
comments.
Right,
yeah:
let's
do
it
the
first
one
it's
near
the
top.
A
B
B
Perhaps
because
you're
running
the
arspic
at
the
same
time,
I
I
shouldn't
be
and
you're
not
seeing
yourself
if
running
once
I
don't
know
it
should
be
fine,
it
gives
me.
I
have
the
same
thing.
It
gives
me
an
internal
survey
error.
A
Okay
and
I'm
getting
this
failure
locally
too
now
yeah,
but
let
me
see,
am
I
getting
the
server
error?
No,
I'm
not
getting
a
server
here,
so
you
want
to
try.
So
I'm
getting
the
same
error.
Do
you
want
me
to
try
to
live
debug
this
spec
and
we
get
in
the
spec
environment.
D
B
A
Yeah,
okay,
I'm
going
to
put
a
live
deep.
Where
should
I
put
a
nico.
D
Just
before
the
expectation
but
yeah
that's
interesting,
but
you
know
it's
just
just
by
reading
on
the
test
right.
What
we
are
doing
here
is
there
is
to
wait
for
our
requests
right,
but
wait
for
request
is
a
helper
that
way
for
ijak's
request.
I
think
we
we
looked
at
it
with
ap
in
the
past
as
well.
D
Well,
what
we
should
do
there
is
to
do
an
explicit
finds
of
something
that
sits
in
the
page,
so
capybara
scrolls
and
wait
yeah,
but
but
let's
go
with
live
debug
just
to
confirm
this,
so
we
can
also
find
yeah.
A
No
you're
totally
right
and
we
could
probably
we
could
probably
expect
these
things
to
show
up
and
then
we're
good
to
go.
Do
you
know
what
you
mean
yeah.
B
A
D
Yeah,
but
does
expect
page
12
selector.
Actually
it
doesn't
wait,
don't
don't
we
need
to
use,
find.
A
D
A
A
One
you
want
to
test
for
yeah.
I
couldn't
have
said
it
better
myself
ip,
but
we
have
the
id
when
we
click
on
it.
So
we
should.
I
think
we
should
get
that
id
to
actually
assert.
Is
this
comment
showing
up
yet?
But
let's,
let's
keep
going.
A
All
right,
so
we
added
a
live
debug.
Current
users,
namespace
one
that'd,
be
a
cool
band
name
namespace.
One.
A
A
hundred
percent,
my
favorite,
is
wait
for
promises.
It's
like
the
most.
H
F
A
F
A
D
But
can't
we
assert
that
something
in
the
diff
is
there?
So
we
wait
for
that
to
load,
and
then
we
assert
for
the
note,
so
we
scroll
into
it.
I
know
it
becomes
more
complicated
right,
but.
A
A
Yeah,
I
would
because
we
don't
even
know
we
could
do
like
a
manual
wait
like.
Let's
make
sure
we
get
all
the
files
that
we
expect
you
know
and
then,
but
but
clearly
even
we're.
Not
our
test
is
failing
it
seemingly
for
a
good
reason.
I
think,
because
if
we,
if
we
run
it,
it's
not
showing
the
note-
and
I
think
somehow
we
want
to
make
sure
it
shows
the
note.
D
Well,
but
wouldn't
you
say
that
how
the
content
is
loaded
on
the
screen?
It's
not
concern
of
the
test.
What
more
are
you
x
concerned,
or
I
don't
know?
What
do
you
mean?
A
A
A
F
I
mean
if
it
weren't
working
on
master.
We
have
had
a
broken
thing
right
now,
right
bring.
A
A
That's
a
great
idea.
I
can
actually
undo,
because
this
is
technically
I've.
I've
reverted
the
stuff
I
can
actually
just
undo
all
these
changes.
Do
you
want
me
do
that
real
fast.
B
But
the
problem
with
the
offset
is
that
we
are
calculating
all
the
time
different
sizes
of
nav
bars
and
if
we
have
scroll
into
view
we
hand
this
over
to
the
browser.
It
should
work
yeah.
This
is
set
up
for
failure
in
the
sense
of
maybe
simply
the
specific
size
that
we
had
in
the
spec
has
worked
so
far
because
we
are
like
we
don't
have
yet
the
size
or
any
offset
of
the
element,
but
we
are
simply
calculating
a
couple
of
offsets
plus
zero,
and
then
we
still
land
quite
close
to
it.
A
E
A
But
all
the
batch
of
diffs
are
loaded
and
we're
not
going
to
be
bumping
anymore.
So
that's
one
approach
is
we
want
to
make
sure
they're
all
loaded.
The
other
thing
would
be.
Let's
just
make
sure
that
at
the
note
there's
not
going
to
be
any
loaded
above
it.
If
somehow
we
had
that
information,
but
I
am
wanting
to
check
this
out
on
master
or
just
without
these
changes,
since
it
is
a
couple
of
files,
I'm
just
gonna
undo
these
this
bit
and
I
can
just
revert
it
back
later.
H
Stupid
question:
we
aren't
loading
all
that
information
lazily
right,
just
to
make
sure
that
we
don't
do
like.
A
Lazy,
we
do
it:
okay,
good
good,
just
making
sure
it's
yeah,
rather
than
one
humongous
request.
We
try
to
show
the
diffs
being
built
up,
so
we
just
send
it
and
a
sequence
of
stuff,
but
it's
not
like
when
we
should
show
it,
then
we
start
skeleton
loading
or
whatever
we're
not
like
responsive
to.
In
that
sense,
that's
what
you
mean.
H
A
Yeah,
that's
a
really
good
point:
yeah,
let's,
let's,
let's
try
running
at
without
the
changes
but
then
we'll
undo
the
changes.
H
Yes,
it
is
hey,
welcome
back,
did
you
have
a
good
time
off
and
thank
you
by
the
way
for
commenting
on
my
slack
overwhelmed.
F
F
F
F
No,
it's
it's
my
kitchen,
oh.
H
No
it's
to
give
you
some
credit
points.
Tell
us
how
much
you
love
your
partner.
F
It's
it's
can't
hear
me
anymore,
you
know,
and
it
won't
do
anything.
Okay,
damn
it
I'm
sorry.
I
was
trying
to
save
you
here.
No,
no,
it's
fine!
No!
The
the
thing
is
that,
via
my
the
local
state,
I'm
living
in
goes
into
corona
lockdown
on
monday,
and
so
I
would
be
alone
in
the
office
right
now
anyway,
and
so
I
said
you
know
with
the
new
baby
and
everything
it's
better.
If
I'm
just
here
until
the
lockdown
until
mid-january,
I
will
just
stay
at
home.
Just.
D
A
F
F
A
D
But
there
was
one
loop
that
started
with
if
location,
dot
ash.
That
seems
like
right.
Okay,
let's
check
that,
while
you
were
moving
around.
F
So
if
you
have
like
a
bunch
of
commits-
and
you
have
the
commit
hash,
it
scrolls
down
to
the
commit
in
the
commit
list
or
something
like
that-
and
I
don't
know
if
it
even
is
the
node
scrolling.
So
we
should
really
check
which
function.
Does
the
node
scrolling
it's
time
to
put
some
console
log
around.
A
Yeah,
I
don't
know
if
you
change
a
js
file,
does
this
load
from
webpack
or
does
it
build
one
build
for
all
the
tests?
If
I
change
it?
A
E
A
Let's
try
it
out,
I'm
also
gonna
open
up
in
chrome,
because
chrome
has
better
dev
tools.
That's.
H
A
Merge
tabs,
I'm
going
to
add
a
console
log
here,
saying:
merge,
requests
tabs
scroll
to
element
hit;
here's
the
container,
I'm
going
to
open
this
up
in
chrome,
we're
going
to
go
namespace
one.
A
A
Oh
no,
I
don't
want
to
save
that.
So
this
worked.
Let's
see,
did
we
get
the
thing
from
the
console?
Oh
I'm
looking
for
something
don't
ask
questions
about.
It
didn't
get
anything
from
the
console.
I
don't
know
if
all
right,
let
me
let
me
just
add
a
hello
world
somewhere.
H
A
H
That's
yeah,
we
gotta
there's.
F
A
I
would
love
by
the
way
something
that
automatically
did
this.
Every
time
I
had
a
console
log,
putting
the
like
the
file
name
of
where
I'm
logging
from
that
would
be
really
cool.
I've
seen.
D
H
A
Boom
scroll
to
element
yeah,
it
ran
right
before
we
did
something.
Oh
look,
it's
already.
Okay,
I
guess
I'm
just
duplicating
myself.
So
we
did,
we
did
hit
it.
I
can
add
a
debugger
here
and
then
we
can
see
the
stack
trace.
Let's
do
that.
D
So
I
may
have
a
theory
why
this
work
with
jquery-
I
was
looking
into
the
source
of
scroll
to
inside
it.
Uses
animate
and
animate
is
actually
a
loop
right
and
it
does
a
callback
that
we
call
itself
again.
So
it
may
cause
itself
again
until
it
actually
finds
the
element
right.
So
it's
chasing
it
across
the
page.
F
F
So
because
at
some
point
we're
saying
hey
scroll
to
that
thing
and
we
just
probably
need
to
wait
until
the
batch
comments
are
loaded.
And
hopefully
it's
not
that
hard.
A
But
it's
like
it's
possible
that
we
have
other
situations
like
this
and
it
would
be
cool
to
have
a
context
agnostic
scroll
to
this
thing,
and
I
don't
have
it
doesn't
matter
if
there's
other
things
going
to
be
happening
above
or
below
it
or
whatever
it
just
knows.
We
got
to
get
this
thing
into
the
view.
I
could
see
that
example
yeah,
let's
set,
can
you
make
that
pain
bigger?
So
we
can
see
the
rest.
A
D
No,
please
yep,
can
you
can
you
search
for
that
name
and
the
code
base
curl
to
element
if
needed,.
A
A
You
need
to
get
something
done,
write
a
view
x,
action,
we're
mounted
and
we
scroll
to
note
if
needed
yeah.
This
could
only
be
done
not
in
view
x.
D
But,
but
it's
actually
good
that
we
are
calling
it
from
here,
though,
because
here
it
has
more
context
on
whether
the
things
are
loaded,
yes
or
not.
Oh
gosh,.
F
Do
we
have
like
do
we
have
something
in
the
react
store
to
know
whether
all
the
stuff
is
loaded
or
not
yeah?
Can
you
check
that
action
that
you
are
in
the
search
panel.
A
Check
this
one
we
just
check,
are
we
in
the
viewport?
Oh,
that's
so
interesting,
yeah!
That's
not
that's
not
great
either.
For
every
note
to
have
this
check.
D
A
Yeah,
let's
do
it
press
any
key
to
oh,
I'm
gonna,
I'm
gonna
kill
this.
Oh
look!
Our
test
pass.
Yeah!
Let
me
just
do
this.
Let
me
stash
what
I've
got.
A
That's
like
the
lead
track
of
our
second
album,
where
we're
doing
some
experimental
stuff,
we
should
do
a
pairing
song
contest.
F
I'm
just
going
to
show
my
wife
that
I
love
her
and
make
her
coffee
right.
Oh,
let's
get
do
it.
D
A
Yeah,
okay,
here's
all
the
changes.
Let
me
stash
pop.
Oh,
I
got
context
oh
gosh
because
I
did
add
stuff.
Let
me
not
stash
pop,
then
I
was
just
adding
console
logs.
So
this
this
yeah
yeah.
That's
no
problem
just
discard
it
yeah,
I'm
just
gonna
discard
it,
but
we
do
need
this
live
debug.
So
I'm
gonna
do
that
one.
A
But
these
things
I
will
oh
gosh.
This
is
the
one
that
we're
doing
this
one.
E
H
Great,
I
I
won't,
I
won't
but
watch
it
if
you
can.
A
Yes,
yeah
we
have,
I
have
kids
so
disney
plus,
is
where
it's
at
right
on
right
now,
but.
A
A
I
A
D
So,
let's
go:
let's
go
to
our
view
component
and
then
delay
this.
This
call
the
action
you're
referring
to
right,
yes,
but
do
do,
do
do
delayed
in
the
in
them.
Do
you
do
it
in
the
component?
No,
it's
the
same.
It's
the
same.
Okay,.
A
D
D
Know
we're
on
the
same
page,
so
the
just
for
theory
purpose,
not
saying
that
is
the
stuff
that
we
should
do.
This
should
be
like
handled
by
the
father
of
these
components.
That
also
know
when
the
divs
are
there
right
all
the
notes
should
they
meet
a
near
end.
Maybe
I
mount
it.
A
A
And
it's
all
it's
all
anchor
tags
and
stuff,
so
I
think
it's
you
know
we
don't
even
need
to
talk
through
components.
It's
just
hey
just
need
to
scroll
to
this
element,
but
I
can
only
do
it
this
time.
I
really
feel
yeah.
This
doesn't
need
to
be
handled
at
the
note
level,
but
I
imagine
we
did
it
at
the
note
level,
because
notable
note
is
used
for
issues,
merge,
requests
everything
uses
this.
So
it's
any
time
we're
trying
to
load
a
note.
A
A
F
I
mean
I
mean
to
me,
it
would
be
interesting
if
we
could
make
use
of
any
of
any
dom
element
or
something
right
that
you,
for
example,
say
hey.
I
want
to
have
the
scrolling
behavior
and
I'm
going
to
keep
track
until
dom
content
loaded
or
until
I
don't
know
what
right
in
the
future
and
then
I'm
going
to
stop
the
tracking
thing
right
or
maybe
I
stop
the
thing
once
the
user
has
like
scrolled
by
themselves
or
something.
A
Oh,
that's
a
good
question.
I
haven't
ran
well
yeah.
I
guess
I
can
just
I
can
just
hit
enter
boom
just
back
pass.
So
adding
the
the
issue
is,
and
I
think
nikki
I
think,
you're
the
one
that
called
it
out.
This
is
a
hunt.
This
feels
hunt
it
feels
like
this
is
on
the
right
path.
A
Jquery
is
elegant.
When
you
say
put
this
in
view,
it's
gonna
keep
putting
it
into
view
until
it
really
is
in
view-
and
we
were
really
quite
coupled
to
that
behavior
and
I
feel
like-
is
it
possible
for
us
to
just
copy
what
jquery
is
doing
yeah.
D
Well,
we
can,
we
can
have
a
small
callback
thingy
that
looks
for
the
element,
it
checks
the
position
and
I
don't
know
after
three
times
that
it
run
100
milliseconds
one
after
the
other.
The
element
is
still
there,
it
called
it
done.
I
mean
it's,
it's
all
open
source.
Can
we
just
I
mean
we
don't
I
can't
I
can
send
you
the
article.
I
think
this
is
this.
Is
the
one
jquery
scroll
to
I
found
it
on
github?
F
D
Yeah
yeah
animators
a
callback
and
he
calls
itself
again
if
you
look
at
the
bottom
of
the
file
yeah,
I'm
seeing
that,
but
I'm
wondering
when
does
it
stop
no
idea?
I
didn't.
I
stopped
looking
at
this
file
because,
to
be
honest,.
A
D
G
D
Yes,
maybe
that's
it
just
set
set
set
your
set
timeout
to
do
200
seconds.
I
don't
want
to
do
it.
I
don't
want
to
do
it.
F
F
If
you
had
a
duration
before
you
probably
want
to
have
smooth
scrolling,
so
we
do
the
smooth
scrolling
and
rather
than
a
real
timeout.
Do
you
see
that
like
yeah,
because
auto
is
like
the
quick
like
scroll
immediately
right,
so
the
only
thing
that
we
do
with
duration
is
yeah.
Okay,
let's
do
a
smooth
scroll
if
you
wanted
to
because
it
looks
like
an
animation,
but
it
doesn't
really
do
the
real
time
out
thingy,
but
we
were
quite
coupled
to
that
delay
here.
That's
that's
the
takeaway.
F
H
D
D
F
I
mean
we
now
have
a
source
code
team.
Couldn't
we
just
create
a
bug
and
be
like
hey?
The
node
scrolling
is
not
working
as
well.
You
should
look
into
the
implementation
of
that
for
the
mrd
view,
and
please
do
that
soon
and-
and
you
know,
because
the
behavior
is
bad
right
now
and
it
will
just
be
as
bad
if
we
now
put
a
time
out
of
200
milliseconds
or
something
right.
A
Yeah,
that's,
that
is
a
that
is
a
fair
point.
So
what
is
the
what's
the
problem
we're
solving
by
moving
forward
and
accepting
that
technical
debt?
What
what
is
the
what's
the
gain
we
get?
Are
we
able
to.
F
Move
the
gain
we
get
is
that
we
are
able
to
throw
like
a
third
of
jquery
away
or
something
like
that
and
that
by
doing
it
we
are
putting
some
more
eyes
on
it
and
can
create
like
a
better
follow-up
issue
and
say:
hey
this
behavior
is
broken
right
away
right
now,
anyway,
please
go
and
fix
it.
I
don't
know.
A
Right,
but
with
no-
and
that
makes
sense,
but
we
are
able
to
justify
this
with
immediate
win
like
we're.
After
this,
mr,
we
can
throw
away
part
of
jquery,
yes,
okay,
I
think
that
makes
sense,
because
yeah
our
net,
our
net,
we're
still
netting
out
a
positive
because
we're
already
this
isn't
great,
and
I
want
to
confirm
this
by
actually
changing
this
to
zero.
So
I
want
to.
I
want
to
do
one
more
confirmation
to
that
we're
coupled
to
this
magic
number
by
moving
this
to
zero.
A
So
I'm
going
to
I'm
actually
going
to
do
this,
I'm
going
to
just
copy
this
old
implementation.
H
Yeah,
I
think
I
think
that's
what
I
wanted
to
do
as
well.
I
want
to
make,
because
we've
been
you've
been
at
this
for
a
while
and
it
jumped
in
a
little
bit
later.
I
want
to
make
completely
sure
that
we're
like
this
is
this
is
the
problem
exactly
I.
I
have
some
level
of
confidence
at
this
point,
but
but
it's
it's
always
good
to
see
it
yeah
spelled
out.
I
think
I
think
it's
a
good
call
ip
that
to
round
it
off
here
create
an
issue.
H
I
think
definitely
encourage
the
people
who
are
working
on
this
to
to
look
through
this
pairing
session
to
to
regain
the
same
conscious
text
that
has
been
built
up
here.
That
said,
if
we
do,
I
don't
think
we
have
minutes
left,
but
it
could
be
interesting
to
to
like
just
throw
off
as
a
final
gesture
like
what
would
be
what
would
be
a
good
way
to
to
solve
this.
A
Yeah-
and
I
think
I
I
think
what
our
guts
were
telling
us
at
the
beginning,
we
one
approach
is
letting
the
thing
that
has
the
information
kick
this
off.
The
note
is
just
looking
at
itself
and
doesn't
have
information
of
everything
else
that's
going
on,
so
we
need
to
move
that
up.
But
the
scary
thing
is
that
these
notes
aren't
just
used
for
merge,
requests,
it's
used
for
issues
and
everything
else,
and
so
moving
things
up
to
the
entry
point.
A
We
now
are
talking
like
three
to
four
different
entry
points
potentially,
but
I
think
there's
a
way
to
do
it
with
high
res
reusability,
but
I'm
not
entirely
sure.
It's
definitely.
H
I
think
this
calls
for
a
like
a
general
solution,
a
a
component
that
handles.
I
do
like
that.
The
component
can
tell
I'm
ready,
but
I
want
to
leave
the
control
to
the
to
the
parent
yeah
and
to
make
the
decision
to
say
I'm
gonna
scroll
to
you
so
like
some
some
kind
of
negotiation
where,
where
you
say
I'm
ready
to
be
honest,.
F
I
don't
I
don't
know
if
that
even
will
cut
it
for
the
following
reason.
Even
if
we
have
batch
loaded
all
the
things
and
all
the
comments
and
it's
all
there,
we
still
do
lazy
loading
of
images.
So
I
don't
I
I
don't
want
us
to
over
engineer
a
system.
That's
then
even
prone
to
error
right.
F
So
the
question
is
like:
maybe
maybe
it
is
possible
to
create
such
a
function,
that
you
know
maybe
for
a
few
milliseconds
checks
if
it's
still
in
the
view
and
if
the
user
doesn't
have
hasn't
interacted
with
the
page
scrolls
to
it
again
and
otherwise
you
know
just
leaves
it
e
in
perfect.
I
don't
know.
A
Another
really
viable
option
as
well,
so
it's
gonna,
it's
gonna.
I
think
it's
worth
looking
into
into
it
for
sure
I
I
personally
like
having
smaller,
focused
resilient
systems.
I
think
is
better
than
when
we
just
make
our
domain
logic
really
large.
If
it's
like,
oh
well,
now
we
have
batch
diffs
and
we
have
all
these
other
stuff
going
on.
Maybe
we
could
reframe
the
problem
to
what
you're
describing
ip.
I
personally
like
that
because
of,
I
think,
the
resiliency
that
it
could
lead
to.
But
you
know
this
is
great
point.
A
I'm
online
editor,
but
I
think
I
think
I
think
we're
closely
related
to
source
code.
I
think
they're
technically,
our
are.
A
Yeah,
I
know
yeah,
did
you
see
or
no
it's
still
showing
up.
A
Oh,
I
still
have
that
good
call.
Thank
you.
Thank
you.
Thank
you,
good
call,
yes,
great
call.
I
want
to
double
check
that
we
have
no
time
out
here.
Yeah.
A
But
that's
scary
and
it's
eve
and
it's
scary
too,
because
that's
going
to
be
a
flaky
that
that's
open
to
some
flakiness
and
spec
world
as
well
like
I'm,
not,
I
think
it's
a
good
call.
I
think
it's
a
good
call
for
this
next
step
because
that's
currently
what
we
have,
but
I
hope
we
don't
just
say
this
is
the
only
way
to
do
it.
A
I
don't
know,
I
don't
know
it
seems
like
well,
I
don't
know
what
this
I
don't
know
what
the
second
thing
is
for
animate.
I
don't
know
what
that
second
argument
is.
I
I.
A
F
A
A
Yeah
we
could,
we
could
add
some.
We
can
add
some
performance
now
calls
too
to
get
that.
Oh,
oh,
oh,
oh,
oh
gosh,
it
seems
like
it's
what
is
happening.
A
Because
here's,
because
here's
the
other
reality
too
this,
because
it
is
on
the
component
itself,
because
notable
note
calls
this.
It's
only
going
to
call
this
once
this
get
renders
so
that's
another
interesting
timing
of
things.
F
A
I
think
part
of
it
too
might
be.
I
think
it
might
not
be
this
timing
stuff.
It
could
be
because
this
you
see
we're
we're
scrolling
at
the
body
level,
but
here
we're
doing
scroll
into
view,
and
so
this
is
going
to
take
into
account.
I
think
some
offset
stuff
that
are
we
do.
Are
we
even
using
that,
though,
do
you
guys
have
yeah,
I'm
not
using
it,
but
we
do
use
content
top
and
that's
a
big
deal,
yeah
content
top
we'll
we'll
do
it?
Here's
why?
F
To
be
honest,
like
I
think
we
have
a
pretty
good
point,
I
have
to
hop
off
as
well.
I
mean
I
started
dmr
like
eight
weeks
ago
so
yeah.
I
know
that
we
probably
need
more
debugging,
and
you
know
this.
Mr
viewer
has
needs
some
special
care
and
you
see
it's
probably.
The
smart
thing
to
do
is
to
have
the
old
end
to
the
new
implementation
and
migrate
bit
by
bit,
rather
than
everything
at
once,
even
though,
if
it
would
be
nice
to
migrate
everything
at
once,
yeah.
A
Yeah
yeah,
that's
and
that's
a
really
good
call
too
that'll
definitely
help
speed
things
along
so
well,
thanks
for
hopping
on
ip,
I
have
one
more
thing:
I'm
gonna
look
at
and
then
I'll
stop,
recording
and
michael.
If
you
gotta
hop
off,
go
for
it
or
if
you
wanna
hang
around,
I
can.
I
can
hang
around
yeah.
I
was
wanting
to
see
what
happens
if
we
just
call
this
behavior,
because
I
see
we're
not
even
targeting
the
elements
here
at
all.
A
So
like
what
happens,
if
we
just
call
this
bit
in
the
new
implementation,
you
know
what
I
mean.
So
if
I
do
something
like
offset
or
true.
A
A
Be
on
top
yeah,
it's
not
pretty.
I
thought
I
thought
that
was
like.
H
Like
just
content
top,
but
that
seemed
and-
and
I
was
thinking
it's
a
big
deal
because
you
you
thought,
like
I
thought
you
meant
it
was
like
gonna-
do
a
reflow
or
something-
and
I
was
like
well
like
this
whole
thing.
It
was
about
reflows,
yeah
yeah,
that's,
but
I
did
not.
I
did
not
think
that
was
a
separate
function.
Function
that
does
all
sorts
of
things.
A
Yeah
because
it
has
to
do
with
the
with
all
the
floating
headers,
I
think
we'll
try
it
like
this,
I'm
going
to
add
a
console
log.
H
Give
me
a
second,
I
I'll
be
be
right
back
yeah!
Sorry
about
that.
A
A
A
A
A
A
A
With
note
2
and
it's
doing
the
same-
it's
not
even
going
down.
Lord
knows
why.
Let
me
console.log
that
we're
actually
calling
this
thing.
A
E
A
What's
calling
scroll
into
view-
and
this
is
not
working,
and
this
is
the
same-
that's
this
is
the
same
behavior
that
we
saw-
and
this
is
the
same
behavior
that
we
saw
in
what
do
we
call
it
and
the
r
spec
test,
and
one
reason
I
could
think
it
could
not
work
is
because
the
element
actually
isn't
in
the
dom
anymore.
A
If
vue
was
like
doing
this
re-rendering
thing
and
had
to
create
a
whole
new
element
or
something
maybe
the
element
isn't
even
showing
up
in
the
dom
anymore.
When
we're
running
this,
because
one
difference
between
that
and
the
old
behavior
is
we're
not
scrolling
to
a
specific
element,
we
just
get
the
element
info
for.
Where
do
we
need
to
put
the
scroll
bar
right?
You
know
so,
when
I
did
this
so
forcing
this
condition
to
run
this
behavior,
it
actually
worked.
A
A
G
G
A
G
A
Yeah,
I
think
it
was
upset
because
of
the
console
but
yeah
you
see
how-
and
I
think
this
is
what
content
top
is
doing.
You
see
how
it's
kind
of
scrolling
past
it.
I
think
content
top
is
going
to
offset
that
a
little
bit
so
so.
H
What
I'm
thinking
here
is
because
there
seems
to
be
some
amount
of
guessing
into
this
and,
like
constant
top,
does
something,
and
we
don't
know
what
and
just
bear
with
me
here.
I
I
know
right.
I
know
I
know,
but
I
like
it
might
actually
be
worth
the
effort
going
through
and
like
implementing
it,
how
we
want
it
to
yeah
like
starting
over,
like
like
and
and
and
again
see
separate
like
separate
issue,
but
like
remove
the
content
top
and
like
okay.
H
A
I
think
you're,
I
think,
you're
100
correct.
I
think
we
could
greatly
simplify,
what's
going
on
by
reshaping
the
problem
as
opposed
to
scroll
to
an
element
and
get
labs
ui
which
could
have
these
and
could
have
these
and
it's
a
very,
very
complex
problem.
If
we
reshape
it
to
scroll
to
an
element
which
may
or
may
not
be
hidden
on
the
screen
under
a
certain
period
of
time.
And
then
we
just
we
just
figured
out.
H
With
the
last
like
until
until
like,
I
think
it
was
iep
mentioning
until
the
user
interacts
with
the
view
the
viewport
or
until
this
max
amount
of
time
have
passed,
then
we
don't
care
anymore.
Oh.
A
My
gosh
that's
a
great
point
if
we
could
do
it
by
the
time
the
user
interacts
with
the
viewport
the
number
of
times
like
I've,
been
like,
oh
yeah.
Here
we
go
and
then
boom
like
I
scroll
it,
it
scrolls
or
something
for
me.
It's
like
oh
gosh,
yeah,
that's
right!.
H
But
that
is
like
something
to
test
out,
because
I
don't
know
if
that
statement
necessarily
holds
true,
because
I
sometimes
like
will
like
jiggle
the
the
page
a
little
bit
to
like.
H
I
don't
know
like
I'm
reading
something
at
the
top,
because
I'm
waiting
for
it
to
scroll
and
that
that
might
be
a
symptom
of
it
not
acting
fast
enough,
of
course,
but
but
it
might
not
be
expected,
like
what
the
user
expects
to
happen,
but
like
pulling
the
carpet
underneath
the
feet
of
a
user
is
rarely
what
you
want
to
be
happening.
A
Yeah
totally
so
I'm
I'm
seeing
way
more
success
with
this
condition
than
with
this
one
and
I
kind
of
now.
If
we
had
lots
of
time,
I
would
want
to
debug
okay.
What
is
actually
l
does
even
exist
in
the
document
anymore,
because
what
we
saw
on
the
rspec
is
it
wasn't
going
anywhere.
So
wonder
why
that's
not
happening
the
other
thing
I
was
really
wanted
to
dive
into.
I
was
wanting
to
add
a
debugger
and
just
step
into
animate
and
just
see
what
is
actually
animate
doing
right.
E
H
It's
it's
friday,
five
p.m,
and
I
took
the
liberty
of
bringing
in
a
beer.
A
Perfect,
yes,
that's
good!
All
right,
I
didn't
have
the
console
open,
so
we
didn't
debug
anything.
Let's
try
it
again,
so
I'm
using
the
old
one
out
of
the
debugger
right
before
we
hit
animate,
so
we
can
step
into
it
and
see
what
is
going
on
boom.
A
A
A
A
There
we
go
now
into
animate
here
we
go
so
this
is
what
anime
does
it
creates
an
animation:
okay,
jquery
speed,
easing
callback,
oh.
A
H
The
speed
is
like
amount
of
we'll
see,
but
probably
some
amount
of
like
weight
on
like
in
between
loops
or
something.
A
Yeah,
it
doesn't
do
anything
okay,
I
wasn't
sure
if
it
gave
it
like
a
default
or
something
then
here's
the
animation,
which
is
a
function
to
do
the
stuff.
So
then
we
are
then
going
to
call
each
animation.
It
looks
like
so
we're
going
to
try
to
do
this
thing
or
we
can,
or
we
can
cue
it,
but
cueing.
We
don't
have
that's
not
in
our
options.
We
don't
cue
things.
I
don't
know.
Let's
add
a
watch
for.
F
A
Oh,
it's
not
even
here
yet,
oh
because
I
haven't.
I
know
that.
Okay,
now
it's
there.
I
was
like
what,
if
it,
if
we're
empty
or
we're
false?
Oh
that's
why
it
delays
it
cues,
something!
A
H
I
I
I'm
sure
it's
something
about
like
an
animation
term,
yeah
and
fx
for
effects
or
something
yeah.
That's.
A
True,
so
for
some
reason,
if
we
were
to
empty
or
we
weren't
queuing,
then
we're
going
to
just
run
it,
but
now
we're
actually
going
to
cue
it,
which
is
good
for
animation
stuff,
because
it's
because
it
you
want
to
do
it
on
the
right
spot.
So,
let's
see
on
the
q.
A
A
E
H
Yeah
now
now
we're
like
in
jquery's
queue
and
promised
land,
which
is
why
this
can
can
be
harry
to
debunk.
I've
been
down.
H
Particular
thing
but
like
oh
yeah,
jquery's
promise
implementation.
Oh.
A
All
right
now,
it's
actually
called
it
operate
on
a
copy
of
prop
okay.
This
is
just
copying
the
prop
and
then
we're
creating
an
actual
animation.
Does
animation
start
itself?
Let
me
I'm
gonna
add
a
break
point
here.
A
It's
a
good
thing.
We're
recording
this
because
I
usually,
if
I
ever
had
to
revisit
it.
I
wouldn't
want
to
step
through
here
again
right.
Oh,
it
must
have
already
ran.
A
I
guess
so
so
now
it's
all
done
so
it
seemed
to
scroll
a
couple
of
times.
Actually,
I'm
gonna
just
confront.
A
A
Boom,
that's
in
that's
deep
in
the
animation
stuff,
so
I
want
to
check
this
out
when
I
step
into
here.
This
is
I
need
to
skip
this
one.
Let's
get
this
skip,
it's
trying
to
do
a
deep
copy
of
something-
and
I
don't
I'm
not
concerned
about
this
right
now.
Oh
gosh!
Okay,
let's
go
for
it
double
double
for.
A
We're
in
we're
out
so
we
did
the
jquery
extend.
Now
we
should
be
able
to
step
into
animation.
Yay
has
a
tick
deferred
promise
right!
That's
what
I
thought.
Yep
create
a
tween.
A
Where
does
it
so
yeah?
What's
start
time?
There's
no!
Let's,
let's
see
it
is
deferring
it
yeah,
which
is
why
it
works.
There's
no
fx
now
so
we're
going
to
create
a
time
that
we
need
to
start
and
we
have
a
tick
function
which
is
yeah
yeah.
So
if
I
go
here,
I'm
going
to
I
put
a
break
point
at
our
tick
function.
A
A
H
I
I
do
like
my
my
expression
about
like
completely
rewriting
like
I
I
know
it's.
It's
like
it
might
not
necessarily
be
worth
the
effort,
but
I
think,
like
a
compromise
between
that
and
what,
if
he
is
suggesting
with,
like
you
know
the
mvp
that
gets
the
job
done
without
touching
all
like
all
the
different
things
I
I
think
is
a
good
is
a
good
step
forward,
because
that,
if
that
means
we
can
remove
a
lot
of
this
this
code,
then
at
least
we
can
start
there
and
then
like.
H
A
I
I
think,
that's
a
really
good.
I
I
like
it
because
the
problem
scope,
it's
a
it's
a
problem,
it's
a
hard
problem,
but
it's
the
problem,
scope
is
is
focused
and
it's
small
and
it's
to
the
point
where
and
because
it's
not
coupled
to
get
lab
context
means
we
can
just
use
it
whenever
we
need
it,
and
I
I
like
that
a
lot,
so
I
I
feel
like
that
would
be
a
good
approach.
A
I
can
understand
if
we're
wanting
a
win
right
now,
wanting
to
just
do
a
set
timeout,
which
is
which
is
technically
this
deferred
stuff
here
and
I'd
be
fine
with
that,
but
ideally
that
wouldn't
last
for
a
while
we'd
have
an
issue
for
we
need
to
solve
this
specific
problem
holistically
right.
But
this
is
interesting.
Definitely.
H
I
I
learned
a
bunch
diving
into
this,
and-
and
I
also
had
to
like
regain
the
context.