►
From YouTube: Frontend Maintainer Review Shadowing
Description
MR being reviewed: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28173
Pinning Tests docs MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28330
A
Okay
time
for
another
maintainer
shadowing
session
today,
I'm
going
to
be
reviewing
what
I've
been
warned
is
a
doozy
of
an
mr.
So
please
make
yourselves
comfortable.
I
have
no
idea
what
to
expect.
Then
what
a
doozy
means
in
this
case,
but
I
understand
it's
a
serious
refactoring.
So
I'm
gonna
share
my
screen.
A
Can
you
see
the
mr
great
okay
so,
as
usual,
just
to
get
my
bearings
I
have
a
quick
skim
of
this
refat
to
compare
version
dropdowns,
so
I
guess
that's
the
compare
page
when
we
compare
do
a
diff,
basically
using
git
lab
github,
see
why
I
can
imagine
that
that
might
be
fairly
painful
and
just
to
get
a
quick
look,
17
files
of
change.
It's
actually
not
too
big,
6,
4,
4,
+,
6,
4,
4,
2,
4
8,
so
I'm
not
actually
too
concerned
about
that.
A
However,
there
might
be
pretty
serious
data
structures
that
I
don't
understand,
I'm
not
familiar
with
so
we'll
just
have
to
take
it
one
step
at
a
time,
because
this
is
potentially
quite
difficult,
so
complex,
I'm,
gonna,
read
the
description
then
read
through
the
comments
that
have
been
left
already.
Not
that
there's
not
a
fare
for
you,
so
I'll
try
and
go
through
this
as
best
I
can.
A
B
A
A
A
D
A
A
C
A
His
head
is
already
broken,
must
at
the
end
of
this,
MRI
is
a
precursor
and
art
fixing
his
head.
So
presumably
this
is
a
refactoring
so
that
his
head
can
then
be
fixed
later
on
my
have
his
head
in
the
layout
there's
ready
when
the
logic
squared
away,
but
we
are
not
fixing
the
logic
in
this
and
let's
try
to
keep
this
really
simple
as
possible.
Okay,
so
that's
interesting.
That's
worth
knowing.
A
A
B
A
The
complete
world,
for
instance,
where
you
assert
a
complete
rendered
outfit
and
is
put
in
useful
during
Ares
refactoring,
where
you
don't
expect
the
rendered
alpha
to
change,
but
your
refactoring,
the
implementation.
So
you
pin
the
before
state,
do
your
in
factor
and
always
refer
back
to
the
pin
and
make
sure
that
you're
not
changing
the
rendered
output,
but
the
actual
pin
itself
the
sort
of
snapshot,
if
you
like,
is
not
kept.
It's
just
a
throwaway
constructed
out
of
the
receptor.
A
A
A
A
A
Okay,
interesting
so,
basically
in
the
parent
app.
What
he's
done
is
this
target
branch
name
was
simply
passed
down
through
to
this
compare
versions
component,
and
this
app
seems
do
nothing
else
with
this
information,
so
he's
extracted
that
into
the
getter
and
then
is
presumably
consuming
it
directly
in
here.
That's
my
guess,
which
is
probably
the
case
which
didn't
mistake
me.
A
A
A
Because
the
most
valuable
thing
I
think
a
reviewer
can
do
is
suggest
a
better
architecture.
Everything
else
is
kind
of
secondary,
so
I'm
trying
to
understand
it.
For
that
reason
to
see
if
I
understand
the
architecture
and
see
if
this
refactoring
makes
sense,
I
could
ignore
that
and
it
would
make
the
review
go
much
quicker,
because
I
could
just
focus
on
surface
level.
Things
like
are,
we
are
we
conforming
to
our
coding
conventions
and
so
on,
but
that's
less
valuable.
In
my
opinion,.
A
Probably
roughly
felt
follows
that
pattern:
yeah
I
try
and
get
an
overview
of
what's
being
achieved,
what's
being
done
and
then
I
drilled
down
into
the
details.
The
nitty
gritty
as
I
go
as
when
I
feel
more
comfortable
sitters
going
into
it.
That
said,
you
know
if
I
see
something
immediately
bad
like
I.
A
A
A
A
D
A
A
So
one
thing
I
am
aware
that
I
need
to
understand
here
is
that
there's
a
lot
of
props
that
have
changed
a
lot
of
props
haven't
been
removed
and
refactored
moves
read
from
one
component
to
another.
Imagine
like
target
branch
well,
I.
Think
target
branch
now
is
a
getter
I.
Think
I,
remember,
seeing
but
like
magic.
West
is
based
a
suburban
path
where
these
are
coming
from
I'm,
not
sure.
A
A
A
A
A
A
A
A
A
A
A
A
Right,
I'm,
sick
of
looking
at
you
single
file
components
we're
going
to
start
looking
through
the
store
and
started
state.
A
A
A
A
A
A
D
B
A
A
D
A
B
C
A
So
I'm
wondering
this
list
of
versions,
it's
getting
everything
except
the
first
merge
question
formatting
yet
and
then
appending
the
base
version
last.
What
was
the
previous?
You
know?
How
did
this
look
previously?
I,
don't
understand
that
I
am
I,
think
that
that
was
mostly
done
in
the
compare
versions.
The
old
compare
versions
drop
down,
maybe.
D
A
A
A
A
Which
actually
makes
sense
to
me
I
think
that's
a
cleaner
way
to
do
it,
because
it's
it
makes
the
templates
simpler,
as
evidenced
by
minus
twelve,
an
app
dot
view
31
on
compare
versions
and
these
tiny
middleman
components.
I
guess
the
this
diff.
This
number
actually
is
not
accurate
because
we're
not
adding
78
lines
here,
which
is
really
weird.
A
A
A
A
So
I'm
now
wondering
so
I'm
sure
this.
This,
mr,
is
big
enough.
I,
don't
want
to
suggest
a
different
refactoring
on
top
of
this,
however,
that
this
comment
is
necessary
suggests
to
me
that
this
data
structure
is
not
optimal.
Maybe
there's
a
different
way
to
encode
this
in
the
states.
That
would
not
require
this
comment
so
I'm
going
to
keep
that
in
mind,
how's
it
going.
It
needs
to
look
at
this
snap
right
now.
Oh,
it's
really
ugly
as
well
so
I'm
gonna.
D
A
A
A
pinning
test,
okay,
well
yeah,
because
because
this
is
a
pinning
test,
maybe
it
doesn't
matter
that
it's
ugly,
it
just
matters
that
it's
the
same
still
I
I.
Would
you
know
it'd
be
nicer
if
this
was
easy
to
read
and
if
you
do
have
a
difference,
if
it's
prettified,
it's
easier
to
see
what
the
difference
is
and-
and
maybe
yes.
A
A
A
A
A
That
was
nice,
simple
change,
so
he's
added
this
spec
I,
don't
quite
want
to
read
through
that.
Yet
so
the
drop
down
the
source
spec.
This
is
that
middleman
component.
So
you
know
the
test
is
way
bigger
than
the
actual
component
I
mean
all
it
needs
to
assert
really
is
that
it
passes
the
correct
gets
a
value
down
to
the
layout,
which.
A
A
C
A
A
Was
expecting
that
this
suite
would
just
verify
that
it
that
component
passes
through
the
correct
getter
to
the
drop-down
layout,
but
it's
actually
doing
a
bit
more
than
that.
It's
it's
verifying
that
the
diffs
module
is
mutating
the
these
correctly,
which
is
fine,
sometimes
that
that
adds
a
lot
of
confidence
in.
What's
going
on
so
I'm
happy
with
that.
D
D
A
A
Yeah,
okay,
that
makes
sense
version.
2
is
not
just
the
second
one,
but
that's
the
base.
One
I
guess
is
what
he's
saying:
no,
that's
a
big
one:
okay,
I'm
confused
by
this
version
index
and.
B
A
A
A
A
Okay,
so
what
I
can
do
do
a
diff
of
origin,
master
against
origin
and
the
branch
name,
and
let's
just
stop
first,
to
see
how
big
so
six,
four,
four
four
ten
that's
already
different
to
this.
Actually
I
can
tell
you
why
that
is.
Oh,
it's
interesting!
It's
really
different!
It's
the
same
number
of
insertions,
but
more
deletions
I
have.
A
A
That's
not
produced
difference
because
we're
still
seeing
there's
no
moves
here.
We
can
tell
it
to
forcibly
attempt
moves
which
I
learned
about
this
option
the
other
day.
Just
it's
still
not
detects
the
move.
Okay,
which
means
maybe
then
that
this
compare
versions,
drop
down.
Spec
is
really
just
completely
different.
There's
no
similarity
whatsoever
between
this
one
and
this
earth,
which
is
maybe
not
too
surprising,
and
if
we
actually
look
at
the
files,
maybe
I'll
I
was
hoping
to
teach
something
new
there,
but
it
didn't
work
out,
never
mind.
A
A
B
A
A
A
C
D
A
D
A
A
Okay,
I
want
to
look
at
the
implementation
one
more
time
of
the
layout
just
to
get
a
sense
of.
Is
this
really
as
as
simple
as
just
listing
under
versions,
it
kind
of?
Is
it's
just
a
very
deep
HTML
structure
which
just
it
doesn't
seem
to
have
any
or
many
yeah
icon
in
time
ago?
Very
simple.
So
this
is
pretty
pretty
plain.
It's
right
for
a
snapshot
test
to
be
honest,
but
what
he's
done
is
fine.
It's
equivalent
I
think.
A
C
C
D
A
A
A
A
A
A
A
A
D
A
D
D
A
B
A
D
A
A
A
And
a
he
go
slice
slice
one.
So
that
was
something
that
was
done
in
the
first
place.
I
have
no
idea
why
what's.
A
D
A
D
A
The
actual
get
is,
if
I
find
it.
Branching
are
changing
selected
based
on
certain
things,
so
particularly
this
one,
this
one
which
relies
on
another
getter,
so
I
think
it's
important
that
this
is
tested.
So
I'm
gonna
I'm,
going
to
suggest
that.
D
A
D
A
A
A
Okay,
I
bleach
from
because
I
can't
type
shroo,
shroo,
yeah,
apparently,
okay,
so
I've
I've
read
through
all
of
it.
I,
don't
fully
understand
the
sort
of
base
the
core
data
structures.
I
still
don't
understand
why
his
head
is
broken.
What's
broken
about
that,
I've
still
got
rendering
problems.
What's
going
on.
A
You
know,
then,
in
this
case
I
think
it
makes
sense
to
transform
the
data
models
and
then
just
render
the
plain
data
structures
like
we're
doing
in
there
in
the
layout,
by
just
relying
on
version,
dot,
selected
and
stuff
like
that.
Rather
than
doing
all
this
nonsense
here,
it
simplifies
this
component
quite
a
bit
as
we
can
see
from
all
the
computed
props
that
are
removed
and
props
loads
of
stuff.
So
I
like
this
I
think
this
is
really
good.
Refactoring
and.
A
D
A
D
A
And
actually,
to
be
honest,
this
is
one
case
where
I
probably
normally
would
yeah,
because
I
want
to
see
how
this
worked
before
and
how
it
works.
After
presumably,
they
should
be
identical
because
it's
just
refactoring
the
reason
I
haven't
is
because
I
want
to
zoom
call
and
showing
my
screen
and
running
the
GDK
will
will
kill
things.
So
it's
not
going
to
work
yeah
so
normally
actually
and
in
this
case
I
would
but
in
general
it
depends
it's
if
I
feel
like
I
will
learn
something
from
doing
so
then.
A
A
A
A
A
And
in
fact,
now
that
I'm,
looking
at
it,
what
I
want
to
do
is
just
look
at
the
commit
history.
Where
was
it?
Oh,
it's
actually
not
that
king
heading
test
added
I
want
to
look
at
the
history
of
the
snapshot
that
they
created
great,
so
it
wasn't
modified
since
it
was
first
added
which
is
great,
which
means
that
as
long
as
it
passes
at
the
end
of
the
commits
commit,
you
know
what
I
can
do
that
now.
B
A
D
A
A
A
A
A
D
A
Maybe
this
is
a
bad
rebase
and
yeah
cuz.
These
are
mostly
exactly
the
same.
Do
you
know
what
I
can
I
can
teach
you?
A
really
cool
thing
get
ranged
if
origin/master
and
then
I
can
do
the
first
head
of
this
and
then
the
second
head
of
this
I
know
tell
me
the
differences
between
them
and
you
can
see
that
they're
all
exactly
the
same.
Okay,
so
why?
Why
is
that
I?
Don't
know
what
happened
there?
A
Fine,
okay
I
at
this
point
would
go
through
the
comments
that
I've
left-
maybe
reword,
some
of
them,
especially
in
this
case,
because
I've
been
a
bit
terse
but
other
than
that
I
would
be
ready
to
hand
this
back
to
the
author
and
say
ask
for
their
feedback.
I.
Don't
think
I'll
do
that
now,
because
it's
just
gonna
be
boring
to
watch
so
I
think
we've
done
great
any
any
thoughts
or
questions.