hey everybody welcome to live coding
with jesse i'm jesse and today we're
going to continue with some
end-to-end testing
for our
react native web app
um so
if you're just joining for the first
time uh
this stream is just me like actually
coding i don't rehearse anything
i will make mistakes i'll try to do my
best to explain what i'm doing feel free
to ask questions uh in the live chat or
if you're watching this later on you can
put the questions in
the uh the comments or just shoot me a
message on twitter or
whatever other social media
uh platform that you like
and
i'll split this up i'll do a 25 minute
period of coding and then i'll go answer
some questions on the live chat so if
you put your question in
i'm not ignoring you i will get to it uh
just after a bit of coding
so we are using react native but we're
using something called react native web
that will take all of our react native
code and make it work in a browser
uh so
the benefit to doing that is
that we can then take that same react
native code and run it in
android or ios or whatever other
platform that works with react native
it also
is a nicer development experience that
we can develop right in the browser
and don't have to spend as much time in
an emulator
which usually takes up a lot more of
your cpu
and it's it's harder
to debug
all right so i want to start out by
going over this uh pull request that i
received so
you can check out there's a link in the
description for the github repo
all the code is open source uh it's it's
all in this repo if you want to add
something to the code please feel free i
have some issues already and you can
check those out
i'm going to start my timer since we're
getting into actual code stuff now
um but we did get a um
a pull request and
i i like the full request and everything
that was done in app.js is awesome so
basically what it what it had done is um
uh
made sure that the
focus
went into the input so
here's our our game
uh beautiful i know right
so what would happen is you put in let's
say four
and then the input's not focused anymore
right so i have to actually click back
in here okay so not a good experience i
actually had my kids play this game a
few days ago and that's why
where i got a lot of the issues that i
put in over the weekend
i was just kind of observing what they
were doing
uh so now after this pull request the
focus will go back
um
so
the the thing i have a question about
though
and i'm not sure
if you're watching
so you did this pull request
uh
seduce
sorry not sure how to pronounce that but
anyway if you're watching
you can just answer me right in the uh
in the chat
um so
i i didn't have an issue where the
division this game is supposed to be for
children who are just starting to learn
uh how to do basic math right
so
the uh
the issue that i had with the division
was
you would divide like single digit
numbers and you could potentially get
decimal numbers
and
children
wouldn't be able to do that right
they probably don't even have the
concept of a decimal yet at that point
so i wanted it so that when you divide
you'd always get
basically you'd always get a whole
number answer okay so i think maybe in
the issue i didn't explain it clearly
correct me if i'm wrong it looks like
what this is doing is it's just taking
whatever the
answer is from the division and it's
just rounding it right rounding it it
down
uh
so what i what i actually wanted and i
put a little
comment here too is what i actually
wanted is
to make sure that the problem given to
the user the division problem
would have a whole number answer so for
instance 9 divided by 3 is going to give
you
3 right just 3. 4 divided by 2 is going
to give you 2
but 3 divided by 2 is going to give you
a fraction or a decimal same way with
like 9 divided by 4 right so the user
would never be presented with 3 divided
by 2 or 9 divided by 4 right
so that's more of like what i wanted
and i have a couple ideas for how to
implement that but if anybody else wants
to implement that please go ahead and to
do if
i guess
so like this part of the pull request is
great and i'm ready to accept that but
this part
like i said i think it needs
worked a little bit differently and
that's that's probably my fault for not
um
uh for not like explaining it
well enough in the issue so
maybe i'll
copy this as well
and put it add it to the issue
yeah
yeah i didn't really
yeah
i didn't really provide many ex much
explanation or examples okay so
hopefully that made sense
and we can go back to some of the code
the testing code
uh let me i do want to say what's up and
just check and see who's here who's
watching
uh so hey everyone
i see a lot of you in the live chat
um
scrolling through really quick
okay
i already see some questions in there
and i will um i'll get to those
questions as soon as the timer goes off
so uh hang in there
and if you can't hang in there right now
if you got to go do something that's
cool you can always watch the
recording of this later on and you can
hear my answer to your question there
all right so we did some testing
and briefly i'll just go through this
we're using puppeteer
to run a headless chrome browser
and then we are
simulating what a user would go through
and verifying that our app does what we
want it to do
all right so this is an end to end test
uh if you want to check up check out
like how we set this up this browser.js
options.js and runner.js those are the
files you want to check out for the the
setup
and then the actual test is
just this one file for now app.spec.js
uh
if you want to know more about the tests
check out the last stream so we started
this in our our last live stream that
i'd done a week ago
but let's let's jump into this so for
now we're just
our first test is we're checking to make
sure we can actually see the title so
like this basically verifies that the
page loads
and it has the text on it that we want
it to have right
um we also verify that the hero
character can be seen
so
when i say the hero i mean
this little
purple square
for now
uh still need to work out some graphics
and a better color scheme for this
although my kids did like the colors
so
all these aren't really
this doesn't look great to me
it actually may not be bad for kids so
we'll see i think i need some more
testing
user testing before i make a
final decision
on the colors
um
let's see so we're testing that and what
i'd like to test is
also
do we have
the correct number of uh of enemies
uh so
right now we're testing addition all
right and it we're saying we correct
addition problems should reduce the
enemies by one
right and we we got pretty far along in
this but not quite so
we have our value one our value two so
we're actually getting the the numbers
that are on the page for our our problem
right so and we're getting the
okay and then we're adding these numbers
together right so
potentially we would do the same test
for
each mode of the game right which for
right now is
addition subtraction multiplication and
division all right but once we get this
addition one working we could pretty
much just copy and paste most of it
to get it working for the other modes
all right so we have it all the way down
to where the user would click submit
and what we need to do is just figure
out okay are there just two
elements left
uh with the class of enemy
so i believe we already added that class
i should verify because our test
definitely is going to fail if we don't
have
anything with that class on it
so let's go to our
app.js and check out our enemies
and
where's our enemies
oops i went too far
yep so we do have a class name of enemy
on all our enemies
all right so let's go back to
the test
so what we need to do then is just
figure out
in our our tests how to do this
so i'm thinking that we could
there's going to be some way to check
for the number of enemies so let's go
over here to our
documentation
which i thought i had some documentation
open from the last time but i guess not
all right so let's
let's think what would this be
probably not puppeteer documentation
look at it maybe
just
we'll see
all right let's check this out this
looks like i've been here
i've been to this article already
and
all right
let's open up the documentation for both
of these
i was hoping i'd get lucky and i'd see
an example of them doing the same thing
instead of having to look at the
documentation
but i don't think that's going to happen
okay
all right so let's check out puppeteer
api
puppeteer is what actually runs the
um
interactive documentation
this is what actually runs the headless
browser
but we can see we have
page
a lot of of options with the puppeteer
api
away page
and i don't i don't actually think that
puppeteer is going to give us what we
want which is why i open jest as well
uh
let's see if they got a link directly to
the docs
nope not yarn docks
oh well
uh
ducks
here we go
mark functions
[Music]
ah api that's what i want
okay
i hate to just look through docs when
i'm doing the coding but
i really don't know what the uh
what the
correct way to do this is
if anybody has an idea or knows uh go
ahead and throw it in the chat as well
i'll keep trying to look over
and
see if you have the
answer
all right so let me make this bit bigger
so you can see what i'm doing
okay so and just to be clear what i need
to do is figure out i need to get the
exact number
of elements on the page that have the
class name of enemy
describe only
each
these are not helping me
oh you know what i had last last time
now i remember this i had my other
computer open and i think that's where i
actually had all of the uh
the documentation open and i kept
checking my other computer that's why i
didn't have any documentation open on my
machine
maybe i still have it open
let's check this out
and i in fact do have quite a bit of
documentation open on my other screen
right now
uh
let's see
the
the problem
with
[Music]
what i'm doing right now and testing at
least for me is
so i'm using
several different testing
like frameworks so potentially like on
the same page we could be
using things from puppeteer jest mocha
or chai
right so trying to find
the right thing to say
in the documentation has been difficult
um
this is a good time to remind everybody
this is not a tutorial this is me trying
to figure out how to do things it's
supposed to be a realistic look at how
a uh a software engineer
works
sometimes
it works out well and i get things done
and sometimes i don't
all right so let's just try
something
um so
we had just copied and pasted this from
up here
with this comment so
we
have our
our result now would be after we've
clicked submit we're going to check for
our inner html
and we should be able to expect the
result to contain
and instead of hero
we could say
enemy
but we want it
we want two enemies all right so that's
the issue
expected number of
all right and now is
let's see
just testing fine number
of
elements
all right so if you couldn't see that i
just searched just testing find number
of elements with class on page
fine selector
enzyme
we're not using enzyme
so
that's not gonna work
all right
let's see
jquery get out of here
um
just you can use click your own
all right let's switch it up react
and to
end testing
all right let's look at these for now
dawn manipulation strikes me down let's
see if we can test the following snippet
of jquery because listen so click of it
let's fetch current user
displays
yeah not exactly what we want
hmm
all right that actually looks like an
interesting article but not exactly for
what we want to do
all right let me check this
all right harsha's here what's this
and harshit has some ideas
are you not using just
this is
all right harsh is saying you should use
cyprus for endang testing
all right i've never used cyprus
harshan says i'm not using enzyme i know
i'm not using enzyme since you're not
using jess wait a second
wait a second so
just is not being used at all in here
why does why did i think i'm using yes
no that's not what i wanted clicked the
wrong thing
um
so harsh it
i mean that actually makes sense though
um
this is using chai and browser let's
just go to cypress really quick then
because i don't know what cyprus is
so
okay
it's like true tree culture
okay so the syntax looks very similar
to all the normal testing syntax
all right so
why
why what then is better about cyprus
than puppeteer
it seems like cyprus maybe
does more than puppeteer
correct
uh
okay
arshad says it'll take time to move to
cyprus
oh michael said jess was removed from
package json so just actually is
installed with create react app so it's
there it's just not in the package json
like it's it's
it comes with react scripts
all right
so let's just make it work with this one
then
okay harshit says
cyprus is a complete framework better ui
all right i'll have to check out cypress
then
uh later on today
and see if that's something we want to
switch to
we're really not that far along with
testing so a switch shouldn't be too bad
um
all right so harsh it's saying we could
just check
elements.length
just check the length okay
all right it takes time to move to
cyprus
sorry i'm looking at the uh
looking at the live chat
all right so harshit since you know what
you're doing here
uh help me out here so i need to check
the elements dot length
so can i get
her body
html
um so do i need to check like could i
just directly
i guess what i'm asking is
am i doing the check off of result off
of the inner html then
enemies equals
contain
okay ours is saying don't use result
no don't use the result oh i should ask
if we could do the live share i don't
have the vs code live share uh set up on
this computer
just don't use result use your css class
okay so don't use result use css class
okay
um
yeah i can't use it like but i think my
timer went
up okay timer went up
let's take a break
and uh let me answer some questions
right now
a lot of people just saying hi
asking what language this is in
it's in javascript
um
let's see
okay here's a question uh carl says i
think jesse should take a coding
challenge from us and he should program
a slot machine game using react native
web
a slot machine game
um i'd never thought of doing that
maybe maybe we can do that
um
carl says next project must be a slot
machine or card game using right native
web say that you accept the challenge
uh i don't know i'll think about it i'll
think about accepting the challenge
um
avia says would you recommend c plus
plus for game developing uh i don't
i don't know i don't know what the best
is for game development so
uh
i'm not the uh
probably the best person to give advice
um
can you suggest to me a video where i
can learn all about the basics of c
language uh check out the cs50 courses
from harvard
they're all on youtube
the first
maybe like the s
third week or third video or something i
believe they go over basics of c
so check out that i mean it's i don't
think it's in the first video but
definitely within like the first few
videos they uh they go over to see
arun asks what is software testing
um
basically like
in in this case we're doing automated
testing so we create a program that
runs our app and tests it tests the app
right you could also do like testing
where like an actual person
tests your your app
uh and that's important too
uh to do them both but that that's what
i mean by testing
creepy ass should i go for microsoft
certification for web
uh i don't really know i don't know
anything about microsoft's web
certification
uh milano world says i don't know what
you do jesse but i'm still learning i'm
busy with html css and javascript
says that it looks cool
um hopefully i'll get there what are you
doing uh this is um react native uh and
we're doing testing for react native so
but keep it up with the html css and
javascript uh when you get good with
that you can move on and do react if you
want
uh
let's see
pa says i am your biggest fan can you
please do videos about pie game i really
need to know
uh i don't know anything about that so i
probably won't do videos uh
let's see
getting
almost um
hugo says oh this is sort of like pair
programming yeah it's it's kind of like
uh
it's kind of like pair programming
except
there's a lot more people
involved
all right um
gap says it's like 8 a.m and you're out
here coding respect
yeah
yeah it is so we started at 7 30.
um it is early but
this is the only time of day that i can
like reliably do this this uh coding
show
uh
vika says
uh
love and saw all your videos nice and
very knowledgeable
oh thanks i appreciate that
uh
rod says is java enough for
getting a job oh yeah there are a ton of
java jobs
available so they they hire java
developers where i work all the time
hugo says cs50 is a bit hard for a total
newbie um
cs50 could be but i i don't know they
search you out really easy like it
starts you out with scratch
uh so
but you're right i mean i didn't do
look at even the cs50 videos till i'd
already been a developer for a couple
years so
um
i i guess i don't know what it had been
like if i had tried it as a total newbie
but but it's supposed to be an intro to
computer science class
um so it's supposed to be okay even for
for new people
um
okay
i actually got through the everything in
the chat uh if i happen to miss your
question just ask it again
um
or put in the comments or something
all right let's go
i don't think i'm going to be able to do
an entire pomodoro session i'm going to
have to
finish up before that so
let me just mark down
where we left off at eight
in the chat
oops
802
so i can come right back to there all
right now
let's get at the very least this test
working before we end or at least try
our best to get this test working
um
this is actually way harder than i
anticipated it would be
it seems like an easy thing but
since i've never done it it's kind of
hard
okay so let's go back here and say
okay so we need to
get the number of elements on the page
so our our selector is going to be just
enemies right is that what it is now i
need to double check and make sure it's
not enemy
yeah
i think it is enemy
but let's double check
enemy yep
okay
so selectors enemy
and
i wonder if we could do
so like instead of eval
body on the page
like can we grab
to page dot
that would be puppeteer
it'd be a puppeteer thing
so let's type page
let's see what we have for our page page
on not page on
page selector yay all right
um
returns
runs talking query selector within the
page if no one what matches return value
is null okay so i don't want that i want
the number
if no one's
this should return
all right so it'll resolve to an empty
array so i'm assuming it would be
an array so
we need to use
dollar sign dollar sign selector
delusion dollar sign
and let's call this enemies
and get rid of this
um actually we can just call this
let's say
number of enemies and we should be able
to do dot
length right
number of enemies is declared all right
and
let's go
number of enemies to equal
all right let's see
see if that works
uh first let me see
como's number of enemies
okay cool so that's what horseshit is
saying too
awesome
i do want to say like so i took that i
don't know five or six minute break and
before the break like my brain was just
totally flustered right like i was try
like i have no idea what to do here um
after the break
it seemed like it was very clear i just
thought like okay fine like i had my
brain had accepted the fact that i was
mistakenly looking at the wrong
documentation
uh which harsh it informed me of as well
but it just took me a second to wrap my
mind around the fact that
like the page
that we get from puppeteer would have
different methods on it
so anyway
i'm just saying that to say like it's
definitely a good idea to take periodic
breaks i love the pomodoro
technique which is 25 minutes of code
5-minute break
it's happened just now to me but it's
happened a lot of other times that
i'm stuck on a problem because in my
mind like i'm thinking this is the way
to fix it this is the path but in
reality there's
that's that's a dead end right i'm
that's the wrong way to go about it
and then when i take a break and think
about something else for a couple
minutes and come back to it it's almost
like a reset
and it just frees up my brain
to take a different path
right
so it's counter-intuitive that taking a
time off would help you do something
faster
but that has happened to me
so many times
um
so anyway definitely recommend that
all right cool
um so i actually i do want to test this
so
i want to test the test
so let's run yarn e2
2e
i think that's what i did
let's check it out e2e yep the rne2e
should run this
and we'll get an idea of whether this
works
nope all right let's see what the
problem is
no node found for selector answer inputs
oops did we not
maybe i didn't do that
um app
let's go to our app
file
and let's find our input
native id answer input
okay we should have an answer input
no node found for selector answer input
all right let's check that out again
type answer input answer
what did i do
so we're trying to
type into answer input and we're going
to put the answer in there
so this should be correct
i'm just i'm going to copy that
and then paste
so that we have for sure exactly the
same thing
oh
i see what the problem is it was camel
case here and it was not camel case
there all right let's switch that up
then
well at least that's an easy fix silly
mistake but easy fix
usually like in javascript you camel
case everything or at least most things
but in
when you're doing these selectors
oh no selective submit did i not put
submit on the button
um
like when you're doing selectors like
with css and html the standard is
usually to
hyphenate things
so i tend to just go with that
it just bothers me to see camel case
stuff in the
dom so
that's why i do it like that native id
submit
all right
no node found for selective submit now i
know we have a button called submit
right native id
submit
right we have answer input they
obviously found that
submit
sub s u b m i t
u s-u-b-m-i-t all right we have it
let's verify like
in the dom
that that is there
okay so here's our submit button let's
inspect it
and see
it should have the id
does it not
do we not have the id submit here
all right let's check this out
s-u-b-m-i-t
wait a second that's just weird
that's really weird
we don't have an id
hmm
all right
let's go back to our code double check
what we're doing
okay so we have this button
we have submit it's it's possible that
you can't put a native id on a button
i know you can do it untouchable opacity
so let's switch it to touchable opacity
this is going to take
button
oh yeah oops
there we go
touchable opacity
there we go
and
we'll need inside of here
um
we can't do the title anymore so
what we're gonna do whoa hold on
oops i guess that went on the wrong one
and i guess i need to keep the button in
there for that one
okay so touchable opacity allows you to
kind of like do more with a button
so you can check it out we may bring up
the documentation in a second touch
opacity
and let's add inside of there
um
a view
and
we'll add text
and we'll say
submit
okay we don't need a title
and i think this should work as the bare
minimum we need for touchable opacity
let's see if that
does what we want
all right so this the styling is going
to be off so like button comes with
styling
touchable opacity does not so we need to
add our own styling which is fine
um
yep here we go now we have the id submit
so let's try that again
right so that's kind of good to know
evidently you can't directly put an id
on a button
now that i think about it maybe there is
a way to do it and
i just need to look it up
but i actually almost always use
touchable opacity instead of button
because i normally want to have
different styling anyway
all right so
now that we verify that the
submit id is on the page let's see what
error we get now
expected undefined to equal
okay so we got undefined
with our
with our test all right so now we
actually have an issue with the test
so
page
she said a weight and we wanted a page
and we're trying to get the enemy
let's see
hmm
so maybe this doesn't return what i
thought it would return okay so i
thought it would return
oops let's get rid of this stuff we
don't need
i thought this would return an array
with the elements in it
let's see what it actually returns
so it's it's returning so we it says
what is running
like what the javascript is so let's see
if we can run this
we'll go to the console
and
we'll say document query selector all
and i'm assuming we can just put in
the
enemy
oops
what do we get here
okay we got three which is correct all
right so let's see let's do it again but
then say dot
length and we should get three
good now what we should have if we get
the right answers is actually two
all right so this works let's verify now
that that's what we actually wrote
in our code
so page
dollar sign dollar sign dot enemy dot
length
and
here we have
page dot mainframe
dot dot
hmm
yeah i mean that looks it looks like
that's what we're doing
right
all right
okay harsh it says uh you need to do the
length in the next line okay
cool
so i guess then that that won't work
doing the chaining the length on
um
so let's do
let's switch this up and say
sorry i'm just
i like i need a different keyboard or
something
uh this is just too different from what
i'm used to using at work
anyway number of enemies equals
enemies dot length
we'll change this to enemies
all right
now let's do the
test all right failed why do we fear
correct addition answer reduces enemies
by one
expected 40 equal to hey we got an
actual number but it looks like
right so this would seem that maybe we
got the answer wrong and we actually
have four enemies so let's
let's see what happens here
all right so we're getting these values
and
we're trying to add the values
do we need to do
answer equals y1 plus value 2.
these are probably coming through as
strings
maybe we need to have them be not
strings
what do you think oh
harsha just said they are strings all
right
and harshit says for button you can
actually use test id instead of native
id and that'll work all right so that's
good to know
all right um
how do we do this is it par parse int
right is that
let's show this out
yeah parse and
that's what we want
and i think the base
is optional so like we already have
like the base defaults to
base 10
i believe
maybe not
all right anyway
parse and
oh yeah
all right let's parse and and
just to be sure let's say base 10.
so like this base here like base 10 is
like our normal number system like if we
put two it would be in binary right so
that's where the base is
uh i'm not going to i would assume that
base 10 is the default but i did i
didn't see that it said that in the
documentation so i'm not going to assume
it i'm just going to put that in there
all right let's see if that makes the
difference then
and we get a correct
answer text is not iterable
what did i do
all right type error text is not
iterable
okay harsh it says it does default to
10. all right that's cool
um
what the heck am i doing with this text
is not iterable
type error
hmm
uh harsha says pass it like this
okay
oops
versus saying maybe we need to give
puppeteer string
yeah that makes sense it was getting a
string before and now it's ah shoot
any is not defined
oh the
dollar sign is not defined
maybe
oops template literal sorry
didn't catch that
thanks for the verification okay
and
those are curlies all right i think i
need to increase my font size
not on this screen that you can see but
on my other screen because i
i couldn't even tell those were curly
brackets i thought they were parentheses
okay
let's give that a shot
harsh it's good to be working with you
again i love it
um
sweet and that worked
awesome
all right cool so
at some point i stated i just wanted to
at least get this test working and
evidently it works
um i would say if anybody wants to do
other tests like this go ahead but
harshit said that
uh he wants to switch this over
to using cyprus uh which actually is
really cool i'm
uh i'm interested to see how cyprus
works
all right cool so
let's
save this before i finish up with the
rest of the questions
get status all right
those are the files that i i
worked on so that makes sense git commit
we're going to commit and do am and
that's going to let us so
i'm gonna say test add test for
edition
hit push
all right cool
that should be on github now
and i think i got a saw a message in
there about this
um
that pull request that it's updated
or something like that did it
okay so i'll have to check that out and
pull that in because i want to make sure
i get through these questions if there
are any more questions
uh and then get to work on some more
react native for uh
for my normal job
um
let's see
all right let me go back to
[Music]
where we started
uh gil gilvane give i'm not sure i
pronounced that so apologies says i'm
from brazil i really like your channel
thank you for saying that i i appreciate
that thanks for watching
um
michael added so we were talking about
the cs50 course earlier and whether or
not it was good for beginners and uh
michael creel says
uh cs50 is designed for newt
excuse me it's designed for noobs if you
start at the beginning
and i i i do agree i think like so
normally your intro to computer science
class would be like cs
100 or 101
right so cs50 is like
uh
as far as i can remember the whole idea
of the class was that you could come
into it
like your major in in university could
be
something totally different than
computer science but you could still
take this course and
and do well and understand it
so
at least it's it's supposed to be like
that um i didn't go through the whole
course i just did the first couple of
videos
so i don't know how difficult it
actually gets
the first couple videos were
we just said i mean pretty
pretty easy to understand
okay
uh
sufine says thanks for sharing your
knowledge you're welcome thanks for
watching
um justin says can someone please give
me the breakdown of what we're making um
sorry i just joined
yeah if you want a
more in-depth breakdown watch like video
one or two video one's kind of rough we
had some technical difficulties maybe
video two would be better but um
basically we're just making an app
that helps
children to learn basic math
it's just they can practice their math
problems
it it gamifies it a little bit
um
so it's it's a little bit more fun for
them actually so my kids
my nine-year-old and my
seven-year-old both liked to play it
so
they were just excited to be able to
play any type of game i think
hmm
okay justin says thank you so it's a
game yep yeah it's a game and i'm not
like a game developer so
um
i
i like i've done
like
things that i suppose you could call
them games but they're not like legit
games before
um
so this is
not at all like if you want to learn how
to be a game developer
i'm probably not the person you want to
learn that from but i do know react
native uh and i do know web development
um so
that's more like where i'm coming from
i'm just trying to make a game like
really like for my children and
i want to try to release this on in the
app stores
um
at some point
uh if i think it's decent so that other
kids could also potentially get some
benefit from it
so
that's that's why i'm doing this
uh justin says you can make whatever you
want i just love coding devs oh awesome
thank you all right cool well i've
gotten through
the uh everything in the chat
um like i said earlier if i missed your
question uh just put it in the comments
you can also uh follow me on social
media i have so the link to my youtube
channel is in the description if you go
there i have all my different social
media links
uh available uh for my channel
so check them out if you wanna
um you know message me on social media
also
uh if you like this you know you can
follow free code camp and set the
notifications so you get notified
whenever i'm going to go live
occasionally i do some videos and live
streams on my own channel if you're
interested in that please check that out
subscribe
um
and you'll get notifications for that as
well
uh i'm gonna try to be back on friday
i'm not sure last friday
i think i ended up not feeling well and
slept in and so i didn't stream so
apologies for that but
i really want to try to stream at least
twice a week so i'm gonna try to get
another one in this week so uh just be
looking out for that
um like i said you'll get the
notification if you're subscribed um
and
i do post on social media uh linkedin
facebook twitter and instagram
before i stream
so
you will get
updates there uh before a stream happens
and if you miss it you can always catch
the recording uh later on
okay
so until next time
have a great day uh have a great rest of
the week
and
i don't know what we'll work on next
time that'll be
to to be decided but until then i'll see
you