Some of you may not know me. Some of you may not may know me. I just want to start off with a little rant. I'm trying to figure out this the second year that I've known about this charity match and I have not been invited. I'm not saying that I'm good at football. I ain't saying none of that, but I'm athletic, so you know. But I'm not saying I'm good. I'm not saying I know the rules. I'm not saying none of that. Everything the UK has done for me and the way I am an American hold it down, I should be here.  No, I have not, me have not done enough on the platform of YouTube to be recognized. But for the people of, well, I'm the people's choice. Oh man. Tello, what's poppin? We are on kickkiccake.com. We are not live though. But you can leave a like, comment, subscribe, turn on your post notification bells. Let's continue to grow the family from Chicago to the UK. Right here above us, if we do go live and you happen to miss it, this is where all the highlights, videos that do not make it to the main channels. They'll be here. Of course, we got kick exclusive that are only uploaded on kick, but yes. Don't forget we do post on Patreon five days a week. This is a five day lineup for us right here Monday, Tuesday, Wednesday, Thursday. This was Friday, but this is the finale. So top boy is replacing this. Don't forget we do got good merch. I just washed my shirt so I ain't got it on. But yeah, man. Appreciate everybody who did cop. Let's get into this man. Sidemen charity match 2023. Goals and highlights. I don't even know who was particularly there. Sidemen versus YouTubers and, and, you know, other content creators, right? ESPN picked up some of these highlights. I had to turn my telephone on DND so I wouldn't see the score. This popped up. I clicked it. My screen was still loading. I did not see the score or anything. Don't know who won. Let's give it to him. Here we go. Okay. Hold on. Sidemen are who? I see Kai. Kai is on the bottom right of the screen. Okay. Are they running plays? Who picked Kai for this? Y'all thought Kai was good? I've seen him play basketball. He wasn't good, but he is a Caribbean person, Nylander, right? So he may be good at this, at good at football. Who is this? Salute though. Salute though. I just don't know him.  You've had enough. Here we go. Tristan D. What can he, what can he cook up? Is that Kai? Oh, he was off sides for sure. Kai scoring a goal would have been monumental. Their first goal at that. I think I knew that was offside because he just left it. Hold on now. And that's perhaps surprising with the technique on display here. He was about very offside. Like, bro, like, this will happen when you from New York and you ain't never played this game. You offside like a mug. Like I know the rules. I just learned the rules. 20 yards offside then. Absolutely he was. The commenter. Is that Gideon? Wait. I hear no whistle. What is Gideon thinking? Is that Harry? You get your faces. Act like you've been here before. Is this his first time ever scoring a goal or something? What is going on? You would have thought this was the final two seconds and he just scored the game winner. It's the heart of a champion. Gideon, you might as well have just picked the ball all the way up. You just gave up a free goal.  You're not even a you're not even affecting the game. You just basically gave it up for them.   Salute though. Is that XQC? I know who XQC is because of Kai. Salute to Kai man. He's done a lot for a lot the generation man. He's generational. You know he's he's kept a lot of inner youth and like any kids off the street period. You know what I'm saying? He probably stopped a lot of gun violence. That's what he's done. And I'll tell you what, he can tell them about that when he's old to say daddy scored a goal at West Ham in front of 60,000 people. He played the bottom left corner of that goal too hard. He played this area too hard. There was no chance that he was getting back over here. You were there. Yeah, you never know about his hand. Look at Duke. Look at Duke. Duke looking like this ain't me. Anything on those crosses coming in? This ain't for me. I might not have played a lot of timing though. Oh my god. First of all, this crossover with slow motion, but he still got bro. Fake left, go right. It's like an in and out dribble. Goodbye. Goodbye. Goodbye. Imagine getting in and out by two people twice and then hitting the goal. This is like equivalent to making somebody fall and football and hitting the three. Yes, JJ has lost his clean sheet. He always struggled to keep his sheets clean when he lived with Simon. Oh, boys. Let's watch this back here. Two defenders on him. Not a problem for him. Goodbye. Goodbye. In and out twice. How you can hit by the same move twice? You literally watched him do the move to him. Then it got done to you. And a fantastic finish. Again, how far have we come? H performing a half time in a YouTube. Who's performing? How far have we come? H performing a half time in a YouTube. Man, it used to be a rapper's like KSI doing it. SQC is a terrible goalkeeper. There was no like move. There was no look away. There was no nothing done. He just kicked a straight goal. This is Telegraph. He made it though. I can't even do my half. Two on target. Two goals for the Sidemen. KSI Jersey saying 69 is wild. To be approached half time. There will be a fair bit of injury time. A perfectly time run. Willowney. Look at this. Chasing shadows. But again, you know, you can't blame him for that. That was gorgeous play from the Sidemen. It's a free on free situation for the Sidemen if they can get it forward, but it's still YouTube also. Is that Philly? Philly on his left foot tries to get on his right. He's still going. Honestly, just hit it on your left. Test the keeper. Out of chunks. There it is. Deflection. The ball just changed directions. Oh, it hit off. It hit off somebody. So KSI was going the right way. That's just bad luck. That's just bad luck. He can't do nothing about that. No, you can't. Chunks out there running like DJ Khaled. So Luke, though. I'll say it again. Probably still one of the most underrated ballers in the scene. Let's take a look at this. Great work from Philly in the build-up. It comes to chunks. Gets it onto that wonderful right foot. With Google Pixel. You just scored a goal on your own person, basically. I guess, what do we call that? Just a deflection. And baseball, that's called an error. That'll be an error in basketball. You would get benched. A deflection off the referee's back. A road shortage. Might affect his rating a little bit, you know. I mean, they say speed equals distance over time, but chunk scores from distance every time. My word. Here we go. Look at his pace. Look at this pace. Manny outside. He's off and away. Manny. Manny's in Simon. Back to Manny. Oh my God, where you going? Somebody clipped this. Where's he going? XQC, get out the box.  What's happening? Every goal I see going straight past your face, it looked like. To me, he was here last year, wasn't he? Dang, they're getting $50, 50 pound donos back to back. Love to see it. Simon and Manny linking up with a 1-2 there. Why does he have on scientific goggles? Look at the event sold out. Like, they're at a real stadium. It's sold out. Manny. Some true strength. Step aside, Adam 22. There's a new cook in town. His name's Manny. Lovely finish again. I'd like to see an angle and see if XQC can do it all. But we've got the boy in the box and you're Manny, and he's got so much space, but you expect him to finish it. Bro. I have to say, I think the scout... Bro, really the reset like this. XQC just put his hands out and the ball went right past his fans. For the sidemen, it's the same guy that does Brighton's transfers because they're found ginger out of nowhere, and he's patrolling things. Digi on the other hand has not made that work, but Randolph, Randolph plays it to Simon. It's like, yeah, what's good... Degi got terrible off-off-off field swag and on-field swag. Tuck. Why is Degi Jersey so big? And why's he got a headband on? Like, five-star skill moves. He's got family. He's hit one. Oh, he's trying to... They teach you early as a child how to play catch. You play catch with your dad. You play catch with other kids. Bro, catch the ball. Have to shoot on Simon. When you catch it with your chest, then you have to... Till the moment of the match so far, flicks it over, Gideon. The shot was enough to call XQC a problem. So let's face it, he isn't going to catch a great deal of shots today. And Manny was there. Oh, do you want... He did well to make that save. We've got to give him that. He almost caught it. But we knew this could be the difference, the goalkeepers. Ah, I get XQC out of here. The Sidemen have a world-class athlete. He's great with his hands, even better with his elbows. It's KSI, Chris and Dee. Great with his hands, even better with his...  Ah, that's funny. Danny Arendt, lives and breathes football. Mr. Beast. It's nice defense from old Beastie Boy. Oh, Mr. Beast. Salute. I just watched my first Mr. Beast video in its entirety, like, last week. I'd never watched a full Mr. Beast. The one where he did the Ferrari and the Shredder, I watched that for the first time. I was like, dang, this is over the top. Like, this crazy. This is all I know about YouTube football games. Where else are you going to see Danny Arendt head to head with Mr. Beast? Look at it. That's lovely bit of skill. Chris and Dee, don't let it go off. Keeps it on. Nice feet. Just pushes off, Mr. Beast. Is that a yellow card? Who takes it? The All-Stars have a need for speed. He's stepping up to the spot here. Speed. This is your time. Don't let me ruin it. This could be the biggest moment in this... Speed. W. Heracut, my boy. I see you been going through with your Heracuts. This is kind of fresh.  The back end, at least for us. Game is speed versus KSI. Stop it. Here we go. The crowd awaits. This is your moment, Speed. Take it. Grasp it. There's nothing more power. Oh my God. Look at the placement. That's W. W placement. W add placement. Skip, skip, skip. Hold on. I know they don't got speed on here like this in the highlights. Face down. Forget CR7. We see you in the change of room, you clown. They tore it to the offside. No. They didn't teach him how to take a penalty. Bro, that shot was us. He's just gotta hit it harder than that. He literally kicked it right to him, too. On the edge of the box. Still alive here, though. Desi could have blocked that. Fuck. Don't show ex-QC. This has nothing to do with him. They wouldn't be fighting from behind if they pause. They wouldn't be fighting to come back if... She's a young shot. It's all right. I take the shot. This shot was us. Yeah. Sold. You know what JJ should do? He has dreads. He should take some of the hair from his dreads and pull it down and get the line in it. You know what I'm saying? To the extra hair line that people be having. Should do that. Sold dead. And you're like, yeah, so you saved the penalty. That was a big pressure moment. Well done on that, though, but... Yeah, I made it. Not sponsored, though. The reverse, too, though. Good shot. Yeah, yeah, yeah. How you got to do that? How you got to do that? You know what I'm saying, bro? Chris, up to Niko. Oh, lovely touch. Touch of a denser.  I feel like I could be... Like, I have the potential to be great at this sport. Like, back when I did, like, everybody played this sport in Chicago. Like, just off the strength because you got Mexican homies. You got Mexican homies. I had a homie named Victor. He played for... He was on the Red Bull team. He was sponsored by Red Bull. I used to play with him all the time. Just off the strength of my general athleticism, I feel like I could be a good goalkeeper. I'm also 6'3". I'm in the process of losing weight. I lost, like, 15, 16 pounds. So, you know what I'm saying? Just next year, watch. Hopefully, you know, it'll be a little invite. This is a bit of a problem area here. I still got some help, guys. Oh, lovely! No cap. That would have been elite. Did he nutmeg him low? They're going to replay it. Hit Genieon off the field. Two goals Genieon has basically accounted for. Genieon is on the Sidemen's team. He's friends with Nico. Get him off the field. Genieon had no chance. Genieon is literally moving in slow motion. It's over. All you see is athletes in black. I can't even blame HPC for that one. That was a good shot. He put it right where he couldn't get it, no matter what. This dude was playing last year. He was good last year. Like, he's literally good. Manny, he's fast. Oh, a hat trick. He scored three goals? Oh, they'd have to blare it if we showed it. I think since last year, though, speed has got a lot better. Like, he does this too much. He's everywhere a football is. You know what I'm saying? Moving on. Some good defending there from there, right? JJ! He'll continue between these two by the way in the box. It's another chance for speed. JJ's leading three in his head. Here we go. I'm not even going to lie. I ain't even mad at the ads, man. They got to do what they got to do. They're going to get 35 million views on this. So they might as well. That's a goal. That's a goal. The way chunks be so under... It's not even about his speed. He just got a good knowledge of the game, I feel. So he can move at whatever pace. Like, he played like Paul Pierce. Like, he can move as slow as he wants, but it's effective. It's like the Luca Dante's of football. That's a goal. That's not a goal. That's not a goal. That's not a goal. What? He's rolled it over. Is that a goal? He's had a stinker. He's held the ball and then rolled over the line. Yeah, that's a goal. If he rolls into speed, he's safe. Speed can't take it up and he's got two hands on it. He should have pushed it out, but he was going to push it right into speed. He was away from speed and into the back of the net. It's like watching Ben Foster and Rex. Oh, they sponsored by Kick? Salute Kick? I'm still waiting patiently. I fancy Nico Amalana for a goal. Kick primes on here. He leads the NDL and the attack. Here we go. Beautiful link up between Chris. Guess how he's free. It's it! It's a good save, JJ. That's a good save. No cap. He's redeemed him. That's maximum effort. Jump there. Danny Aaron's recently retired his dad. So now he has someone to hang out with. That's good for him. Oh, loud challenge there. We could have let that play on, ref. Full kick for the sidemen.  One of his trousers. Hey, he pulled out of reverse. You got Paul. It's clever play. He knows the law. Look at the stats on footmop. Highest rated player right now. He just had that uno card in his pocket. He might have got that yellow card on purpose just to pull that out. It's going to be Manny, hasn't it? Manny's on a 9.7. Chunks on an 8.7. Open. He's on. Take it away, big. Vic Starr is down. Vic. XQC couldn't have did nothing about that either. That's a good goal. Didn't he score? Oh, who scored the first time? What was the one, the first goal then? Oh, he has got a cannon of a strike point. He doesn't often get to unleash in these matches. But look at this. And this is to quite insist. The Vic Starr assists. Vision. I mean he's a playmaker these days. Do XQC even be trying? Like now that I'm seeing a replay. He's attacking his game as he's got older. This is it. I'll tell you what. Bro said, huh? Like what are you doing? A fantastic goal. It's 7-4 now. Like you said, the Sidemen, they're known to get 7. It's a fake on the screen there. Canary is out. Nothing short of Kevin De Bruyne's. Take it away. Get up the field. You were on a GoPro. Speed. Flix it past. Mr. Beast. It's a good pass. That's a good assist speed. That's a good score too, Nico. Here we go. Goal scored for the All-Star 69. Nico. The Real Mayor of London gives the YouTube All-Stars a klimmer. Nico, you could just rely on him in those areas.  Absolutely. Nico, look, Linky is hit. Linky, he look lanky. He look tall. He look tall as he playing. We've got nine minutes injury time. We're almost four minutes into it. Oh, wow. Oh, wow. And that's the game. That's the game as he goes in. No, he's not being flagged. He's not being flagged. How is that? It doesn't cross the line. Just like all my jokes today, it's perfectly on the line. Yeah? JJ on the edge of the box. He's taking the box. What is JJ doing all the way outside the goal? He has no faith in him. No, Jokes, stop. Just be easy. Just be easy. Oh, the Poser now. There's no keeping. That's up side. Shirley. Shirley, that's up side. Ryan All-Stars playing, maybe. We got to go with a different goalkeeper next year. YouTube, YouTube All-Stars. That's what happened there. To reach. I have to. And you know what? This is the push that I need. I need... The game. I need to be here. I need to be here. It's got to be. Let's take a look at this again. So he's definitely in an offside position. JJ's presence there caused them problems. The lack of composure for the All-Stars was problematic. Yes, it is onside because it's completely played through to him. Oh, you've got to think that they just needed to get rid there. You need to let Chunks have the ball there. Chunks got... I'd say Chunks went the wrong way. Chunks was running as fast as he possibly could. Because speed was out to the right. Potential penalty there with the shirt pull as well. But Tariq takes his moment. Tariq's... You know what's crazy? Chunks got a skinny man bottom. Like, from the waist down, he thin. Says, hey, I can have my shirt afterwards. I've just scored. Comes to Manny instead. Absolute, though. Good man. He's got a hatchet. Can he...? Good morals from Chunks. Chunks got... Chunks got good morals. Improved that. Well, big touch. Big shot in the left. Bosch from Flush. Still alive though. Chunks is up. Oh! It's going to fall to Deji. Great blood from Jenkins. Deji. Deji got the most unathletic genes. Like, he just... Everything went to KSI. He shouldn't be outbilled. He should be... What he is? Except for the gaming. Deji can game, but... Tasting himself. Ain't that right? That's right. He's fine, man. It's an successful event, man. Can we beat him? He's about to lift the trophy. Oh, that's a trick. I'll be the second. He's made it. This is literally a spectacle. If I can't play, I want to go at least next year. It's the most huge year now. Let me know if there's a song. The rhythm. Salute, man. T.L.O. leave a like, comment, subscribe, turn on your post. I said everything I had to say, man. I'm done.


You know when you're like sending a really funny text and then you're like laughing by yourself Like to the point where like I started vlogging and I'm still laughing at myself. Yeah, you know happy Friday guys Today is a day where I am getting my life together. The dogs are getting groomed. I'm getting my car wash I need to do laundry. I need to put away new clothes.  I love these like Kia cups and This glass straw guys like literally take a shot every time I mention these glass straws just kidding actually don't buy it very good beautiful I also made some overnight oats last night, which I haven't had in so long I didn't have like half of what I normally use an overnight oats, so we'll see if it's even good You know peanut butter is a little bit thick seems promising gonna eat this and drink my coffee and do my little morning reading My morning reading lately has consisted of reading a few essays out of this book, which I've been talking about in vlogs non-stop I'm on S8 27 I read some I was in the pool on the rooftop. I should I tell So good guys you learn so much this straw changes the game.  You know what else while we're here. It's weird to do this in the kitchen but my Clocklamps that I have I have long hair, but I have a lot of it So finding clocklamps that actually like hold my hair up Like doesn't happen and they it'll fall out all night, and I just like can't do it I got this on Amazon that they're like jumbo clocklamps. I think this is actually the smaller one of the jumbo And I literally as long as it's not like a Pilates workout where I'm laying down I look work out and they hold it. That's like Don't pay attention how it looks like didn't try you know, but Best clocklamps ever. I will also link those below I talked about I talked about them all the time, but they really just changed the game They have big ones and there's also like pink ones and they're cute. Just finished working out. I'm drenched I feel gross I have so much cleaning to do in my house like deep cleaning that I want to shower after so I'm gonna go drop the dogs off at their grooming appointment. Oh, you know what? I can't get my car wash It's gonna rain this weekend It's gloomy now. It was so sunny an hour ago. I'm home. I'm gonna set a timer for 45 minutes I'm going to clean all the floors upstairs my robot vacuum and mop right here not sponsored But I do have a code for like a hundred dollars off. I Didn't deal with them a few weeks ago, and it's literally I went into my manager's office this week And I'm like that's the best job ever done because this thing has saved my life I need one for upstairs. So I never had to put my floors again Anyways, as you can see I have a lot to put away over here. We're just gonna get to it I'm gonna clean my stairs the floors are gonna be mop. I mean, it's gonna be like a whole new house Just give me some time, you know, I'm listening to Kit's podcast with her mom sent the rally so good guys They need to document this but these are my first new clothes that I just bought that I'm putting in the closet Like why do I feel like this needs to be documented? It really truly does it. I just love this room This was the best decision I've made in my house. I Just feel so good in here I just cleaned the floors clean all upstairs got rid of some more Mess that was in here. I still need to take this stuff downstairs, but I grabbed a bunch of that stuff I have to wait until my brothers are back in town so they can take care of the rest of the boxes They are driving me insane. I have trash. I cleaned in there the robot vacuum mop Just clean my floors down here. So beautiful. It's pretty clean down here. I'm working So I just have some random stuff on the counters, but love this I got a package from pure synergy. I'm working with them on the podcast. I'm really excited I'm actually gonna try this right now. So this is barley grass I'm excited to try this. I'm gonna do this in a second, but later this afternoon I want to try making matcha with their matcha powder my big frother broke I ordered a new handheld frother and that one doesn't work for some reason So I'm just gonna boil and whisk it together myself, but I'm excited I'm gonna try this drink I'm gonna put in two teaspoons. Oh It is now 12 30. I've cleaned the house.  I'm just so tired throughout the day. I've been waiting for the dogs to be ready I'm actually about to start editing a vlog just getting stuff done my night starting a little bit early tonight It's like 445 so I'll probably do like a little get ready with me and like what I'm gonna wear It's gonna be really chill. It's just like me and the girls as literally always.  Also again, I live for this cup. It's just so good guys What I'm about to show you I Need you guys to not laugh the dogs are very insecure. Okay? Okay, guys Obviously we're back from the groomers He chewed cocoa.  Okay, dude. Okay, bud.  Oh Come on Coco girl to the rescue. I Have something for you. It'll be good We're gonna go. I think it's upstairs. We have to go find it. Come on Coco. Let's go. I Love you guys. It's like Coco's perspective almost Well, the Dior one. Okay. Here's a bit This one like makes more sense for the times But it's messed up. She's not happy about this but girl trust me. You're gonna get cold.  Oh see girl. Look at this. It completes the look Look at how cute You look with your sweater.  Yes, you look so cute. I love you. Oh, oh, no, no, no We don't do that. You're looking cute girl. Hey sit Good girl.   Let's go you want it upstairs because really you want them I have no sweaters for you. You are very big guys I got another package from after voices and I now have the blue exercise dress You guys didn't know the new ones have straps on the back Which is so nice because you can actually adjust it now Which I love if you don't have an exercise dress like you need one These are the best things to wear in the summer once it's hot You can actually work out in them You can just wear them and make them cute like white sneakers. Oh, so cute really love these very excited Thank you so much out your voices. I decided it's currently 120 Starting my night. I have plans at 445. Okay? I pretty much never have time for my rollers to sit in my hair for like four hours What so that's what we're gonna do tonight guys just got these I'm no pro I just got these off Amazon. This is where I have no good storage for them if you have good storage Let me know and then I got these clams. I'll link everything below. I'm not a pro I just watch tiktok stuff. I just watch like YouTube videos What I normally do is I'll go through my Dyson with the round brush And then I'll go through make it hot and then do the roller and let it sit probably for about an hour before I Go out, but I have more time. So I want to see if it really makes I want to see what happens You know I'm a round brush attachment anywhere So I'm just gonna drive my hair make it hot and then see what happens from there So I'm gonna watch some YouTube videos do a little time-lapse And we'll see Second like it is 140 and I'm supposed to keep these in for Three hours Like that's the other thing. I'm like this is just so uncomfortable. You can't even move my you know I'm gonna go through and make sure they're really hot. I know this is like risky, but Guys, I did it like totally different than how I normally do it like this stuff's really high up and yeah We're just gonna like see But like how much is the vlog for the next you know what we're just gonna get you know I just added a vlog and like get a little bit of reading done. So Maybe we'll talk when I'm like getting ready, you know guys. This is this is the stuff we do This is the stuff that tiktok makes me do Okay, oh my god. I just off fits again. I forgot they were naked mole routes.  Oh Oh, but let's go downstairs. Let's go downstairs, but here we are again. Okay. Oh There you are girl. Hey guys. I'm about to actually get ready. It's much later. Hello still looking like this Got my work done But I wanted to see a first off. I need to rinse my bathroom I wanted to go through my PR and just see if there was like new products that I wanted to try I wish more than anything that this actually came in my shade I'm gonna give it to a friend, but like it kills me that this is not my shade because I want to try this so bad Um, I feel like even that's even like way too light, but it's just wow amazing. I'm gonna try this primer Um, let's see. That's a pretty color. Oh, you know what? I bet I would love this Because I love these rare beauty lip glosses. They're so good and I love like a bright pink lip right now Oh, that's really pretty but not my shade Oh, let's see Primer primer. I have so many primers. Okay. I really don't have much makeup makeup to like try out right now So, sorry guys, you know what? I might do the bye-bye foundation. This is in medium I think I'm gonna do this. This is nothing new, but I haven't used it in a long time So it'll be like trying a new product. You know what I mean? Okay, so The next like real task is going to be doing my makeup with these things on like definitely again not ideal Life is a journey. Okay. We're we're all just trying our best here I'm gonna actually start off with this lip gloss and see how I feel about it Well, I mean I know that I love the lip gloss. I love the color I love these lip glosses. They're like natural looking lip glosses the perfect sheen. Oh, just 10 out of 10 guys Let me know if you never want me to post a vlog on the internet ever again after seeing this one Okay, we're starting off with the hourglass mineral primer Interesting. Oh, it feels really like interesting your skin. This white temp though stresses me out. It makes me worried that They'll be like flashback or something. This is one of my all-time favorite lines that it cosmetics Oh, well, this is by the foundation It's not the cosmetic CC cream, but it looks the same. Wouldn't you be confused too? I just do one pump normally for the CC cream. So I guess we'll see I'm gonna do like a little bit more like Barely any for my cheeks For some reason my foundation sits weird right here On my skin, but I don't know why because there's nothing different about the texture So without that you would really just do one pump That's the only thing I will say these things last forever like it's so much product I'm into it so far. We have a post-op lip liner found that I need a vanity and seeing people put like Just a little bit of concealer here and then here How does that work? I'm going for a more glowy look tonight. I do like how my skin looks. I will say The lighting here, it's not the best. You guys know the drill my favorite cream products lately If anyone has been able to find the Charlotte Tilbury like Really popular little stick thing Where did you buy it because it is sold out everywhere like these are even hot So is it even doing anything if they're not hot now? Probably not honestly the best cream blushes ever I mean, I haven't tried that many but I love these Going over with an actual bronzer Just something that I do Maybe it's the drama on me, you know Then of course I use bronzer as my eyeshadow This is mainly due to the fact that like I don't know how to do my makeup, you know I'm not feeling the wings look tonight going back to a classic The Becca champagne pop highlight for brows Um, I'm just using a brow gel from Charlotte Tilbury. I'm getting kind of impatient with my hair I feel like I'm going to take them out soon. Um, which worries me because You know, I'm our night is starting so early Like will my hair look bad by 10 p.m. You know, probably not because this is like a easy blowout look Coco so rude hourglass setting powder This isn't like my most insane look Um, we're well, I lose here. I lose my Okay, I have this hourglass veil soft focus setting spray, which I actually really like It missed on very well Next we have some mascara. Oh, I can't even do my mascara with These rollers Okay, well just got the mascara all over my eyes. So like look On my eyelashes. I don't even know what to do. Do I just have to like dry?  Like this is very bad Like I just did my entire face of makeup Oh, they're drying butter I'm gonna have to like obviously fix this one off, but it's not as bad I normally really like that mascara actually. I was literally about to say it's a great mascara and that happened to me Okay, so this is looking good. There's a little bit of a little crease there, but uh It's fine. It'll be under the rest of my hair Oh, okay, looking good. I also got a new hairspray I've had a bad one for the past literally since I'm dead and I accidentally bought a bunch of them So for some reason I just like didn't want to get rid of them and then I finally was like Okay, I think you're gonna get one. It's been a year. I'm gonna go ahead I'll spray this but I have volume These are gonna be interesting because this is not how I normally do it So I'm curious to see Oh, it looks so much worse than what I normally do it The one time I do it on camera is of course the time that I like really messed it up Okay, we have some problems because this is really messed up like this one is just like a little I wish I would have done it the way that I don't really do it. I don't like it though. Like it's like a It's like an easy block. Honestly, it's just this piece. That's like bad and the rest is fine and it gives me volume I will say every other time I've done this off camera. It has looked 10 times better though. So Um So what's the thing to straighten this piece out? I don't even know what I'm supposed to do Okay Makeup and hair done pretty much I don't know. I've done it so much better. It's just it was um, honestly a letdown. It's fine So here's my outfit totally different than what I plan to wear It's a lot of pink. I have my new jeans on my new shoes by the way These are really easy to walk in really easy to walk in. I definitely recommend. I'm the biggest one But it comes to any show To any shoe with any type of heel and like if I can commit to these for like a long period of time So can you I have my new wash of the asymmetrical jeans. These are princess poly. I will have them linked below because it's not sponsored um So in yesterday's vlog I talked about how I Decided to go data size for reference like typically a medium between like a four and a six And in the jeans I had a six because they were like baggy and I like that look But I feel like I've worn them so many times that I just kind of worn them out. They're a little bit too baggy So I got them in black and I got them in this shade. I really like them. They're literally the perfect fit They're so slimming. They're just like really cute. They're comfy I wear them more than I wear like my 200 dollar pair of jeans. I cannot recommend them enough This top also princess holly my bag juicy. I have a lot of pink going on here Lots of different looks. I'm gonna fix my hair But uh, here we are for my outfit for the night. Here's kind of like a better look at the makeup not really I don't know if you can see it's just like It's like fairly simple from the future. I forgot to outro this vlog, but I hope you guys enjoyed Um, subscribe. Love you all. I'll talk to you soon doing more research and just like this is the life That's actually so funny that you're saying that I could actually see all of that Happening in like a young adult novel for sure Yeah, I definitely had an interesting journey and gotten very lucky in many scenarios. I feel


Hello, it's Bob Cook here and this is the fifth Supervisory video that we're looking at in terms of the Hawkins and Sheriffs model. The vocal part of it is the seven-eyed model of supervision. That's what we call it. It comes from their book, Supervision in the Helping Professions in 1989. This is stage five where we're looking at parallel processes and the supervisor is helping the supervisee, a construct merely on the relationship between the supervisor and the supervisor and the parallels between the therapist and the client and how there could be some parallels. Okay, so I've got Wally Leokes here again. And hello again. Hello. We're continuing this theme. Yes. Where we left it was looking at counter-transference. Yes. So, are we on the sixth session you've got to now? Yep. Where are you up to now with this? Well, it's interesting that the theme of the work has now shifted away from the son, to some extent, and she's moving into her previous relationship with the son's father. So the person she's married to now is the second husband. And we get in a lot of her. His dad did this. His dad used to drink. His dad used to do this. It's just like his father. And at one point, I gently challenged the client and said, do you see any of your son, anything of your husband and your son? And she said, oh yes, he's just like him. And I again gently said, he's a different person. He's a different person. I can understand that the frustrations may be the same, but actually he's a different person. And that kind of, she kind of stopped a little bit and she kind of looked at me as if I kind of said something out of turn. And she paused and she kind of, she kind of did that and looked into space. And then she said, yeah, yeah, I guess it's, yeah. And she was almost kind of lost in a bit. I left her a little while in that place. It was almost like there was a new process evolving in it. So I just left it. I just left that until she looked back at me again. And then I said to her, how did you feel about me saying that? And she said, well, you're right, but he's just doing the same things. You know, so we worked on those kind of historic things. Yeah, it sounds like you're going a long way in terms of helping her sort out what's happening. And as you talk to me, I'm starting to really take this picture even further where you're up to. And as you bring it to supervision, how do you think you've got on so far in the last six sessions? And are there any supervision issues at all? Are you really pleased about how you've got on? Yeah, I kind of like this client. I can see that I can see that given she's under a lot of constraints, sort of societal constraints that hold that hold her back. If she was around, if she lived in her own home, then maybe if she could then go and bring her son back, I don't know how it pan out, but she could. And there seems to be kind of societal constraints for them because of what her housing provider said, which I think is a bit, I understand it, but it seems unfair at the same time. It's almost like she's not getting any quality. If she lived in a mansion somewhere, there wouldn't have been a problem. You know, many as well might have been a problem, but generally speaking, she wouldn't like to lose her own home. So as a mother, she wouldn't be putting that in position, which I think feels to me a bit unjust, Bob, to be honest. Yeah, and interestingly, when you talk about the new partner, the new partner doesn't want to have anything to do with the son coming to live with them. I think he's struggling because he knows that when the son comes, their life would just change for the worse because of external forces that they have no control over. So he's frightened that they're going to lose what little they have. And do you think there's some truth in that? Well, I mean, I can only go off what the client said, but apparently he's stole from neighbors, caused a lot of trouble. He had a bit of, and minimizing it by saying a little bit of violence, violence is violence. You know, he flashed out and he basically said if he comes back, the people who run it, it's like a social housing provider will terminate the tendency because of health and safety issues, risk issues, that's how I'd say. Yeah, I was thinking about parallel processes and whether, you know, part of the parallel you've been here might be like me being him or something like that. But I know you've kind of seen quite clear. However, I'm interested in power posts because you were talking earlier on, I think it was in stage one or stage two about a parallel process that you thought of. And I said, we'll hold it there and bring it back. Do you remember what that parallel process was that you even spelt it out for me? And I was thinking, because parallel processes are all really, what it's really about is helping, having this focus, or if you see it like a torch, to be able to help supervise it. So for example, they may bring, to me as a supervisor, yeah, the very things that they're stuck from in their relationship with their part. So, you know, say they're working with an angry client, sure, right. And then they come to me. And the way they present to me is very angry. So what they've done or might have done is taken the anger which has been projected from the client under themselves. And instead of dealing with it in some way or whatever, they then acted out to me. So the question is, who is it that's really angry? Is it, you know, could it be the supervisor? Is it the, where's this anger come from? Sure. And often, as a supervisor, by helping sort of shed that light on that parallel process. So, you know, the angle that's actually been presented in the supervisor-supervisor-Z relationship really has its origins or its etiology in the relationship between the client and, sure, the therapist. And I was just thinking here that was any parallel process. And there might not be, actually, that you might have brought to here in the way that you're describing your client. And I was thinking, well, I wonder if there's some parallel process in the husband and who I am, for example. And then I thought, I can't see any here. And then I remembered you talked about some parallel process back in stage one. There doesn't have to be a parallel process. I've described what it is. I think, you know, there's definitely one of social injustice. I mean, one that's just talking about that, about the fact that if she was richer, then part of her anguish wouldn't be available to her. And he might bring it here then. Yeah, yeah. And part of that, you know, the anguish is that almost like society has said, you can't go to your son, or you can go to him, but the consequences are going to be catastrophic. And that makes me, it makes me sad and it makes me angry. And to be honest with you, I wonder if I'd be a bit angry at husband for not kind of saying, well, why don't we? I understand why he's saying that, but maybe thinking about husband might be kind of saying, if it was me, I'd be going, well, I think we should give it a go, but I think underneath it would be the role to catastrophe anyway, because it's not intriguing, you see. And it would be a parallel process if the client, or a client talking about the husband, brought to you their real anger about social injustice. And instead of you, I don't know, feeding back to the client or talking about what it all comes from, you bring it to me, and then put it up to me. That would make the power process. And then I could grasp hold of it here, and then help you, if it's surely useful in the supervisory process, bring it back to what wasn't discussed in the original relationship between the client and the therapist. That's parallel process to it too. And sometimes there isn't, but I think it's a useful way of looking at things. And stage five focuses on that. Yeah. Thank you. That's welcome.


Well, hello everyone, my name is Justin Isen. I am a senior software engineer at Apple Tools But those of you that don't know what Apple Tools is our booth is right out of here, we specialize in visual testing and Little bit background about myself. I've been in IT about 20 years now the first 10 years were manual manual tester and then last time that been development automation and so forth Another bit of history is I too was that was at the 2012 Selenium conference where I saw Dan's Awesome prototype that he built and I was amazed because at the time I was using UI test those of you that remember IOS is automation framework years ago, which was not the best and I was also doing robotium for a Java for Android so that actually Having two separate frameworks was quite a frustration and then plus Selenium for web, so Now we're all here because of Dan and Jonathan Rips and Jason Huggins, so It's a great achievement that now we have Appium. So today. I'm going to talk about using Appium to build this native app crawler that I did and how I did it and show you the Pros of using sometimes So the topics of my talk will be talking about today's quick development landscape, especially with agile Mobile the mobile test matrix and all the near impossible combinations that we should validate before we release and showing how we could leverage Machines and do some of the work that we are having to pick up and do manually just because of all the work that needs to be done In how a crawler could potentially uncover more bugs to help you You know find localization issues and performance problems, etc So the agile world moves fast and it's up to us to keep up. I Put this video in here because this is how I felt This is I was this guy in the middle here running away from the bugs as fast as possible And those were the developers on there were top right laughing at me as they were introducing new bugs trying to torment me So especially with like CI and CD, you know the time to market is becoming increasingly shorter Companies want to push out new features to keep ahead of competition They want to push out new bug fixes They want to keep their app fresh. They want to take advantage of new operating system features or even Features introduced into the hardware Because of this we're having less and less time to test these applications for all the things that we need to do And it's putting more pressure on us A lot of companies are relying on the end users to report bugs, you know, I see it all the time I feel like we're almost Desensitized by it. It's almost expected that oh the user, you know Hopefully a user will find whatever bugs are and report it to us and we'll fix it You know, I don't really agree with that approach, but it's sort of the way things are currently so the goal My goal at least or what I was trying to do with this was, you know, put the machines to work automate automation And create something that I could collect as much metadata about my application in every single build to report back It's findings. So essentially like if I handed you The application I said here go ahead test my application. Tell me what you found, you know, what issues you found Essentially trying to clone myself You know because of the limited resources that I had at the time to give me back information about my that I could check So what is an application crawler? There's a you that are familiar with web. There's web crawlers out there. Also known as spider robots Basically, it's a program to mimic what a human would do but at a software level Interacting with UI components, but before I begin, let me give you a little history about why I decided to do this So I worked for a small startup at the time and we were very big on dog food in our application Those of you that don't know what that term is.  We also had Small QA team of two people that only had to do QA but also test all the different applications we had Which was about six iOS Android web Both desktop clients on Mac and Windows So forth. So it was a lot For limited resources to test everything, but we also tested internally But some of the applications got more testing than others because some people preferred one platform versus the others And our applications were constantly changing We had some very very very talented designers and engineers and developers for our platforms And just like any artist, I guess you would compare it to will they were never happy with what they did last So they were constantly changing things changing the UI or changing tweaking things here and there So I was finding myself constantly having to fix and revise tests Due to these changes that our developers and designers were making and I felt a lot like this guy You know, those of you, those of you could probably empathize with me or sympathize You know, you could spend an hour two days a week months, maybe just implementing one single test because You know mobile automation isn't always so direct. You always are finding that workaround Or you're doing research to solve a problem can take take a long time So after spending all that long time and patting yourself on the shoulder or back or whatever Happy by yourself for only that implementation to break the next build. So this is how I felt So about three years ago around that time when I was feeling like that guy. I had this crazy idea You know, how what if I could just automate the automation? So let's go into the mobile test matrix and all the combinations that You know depending on if your application supports it and what we need to test so orientations It's not just landscape a portrait anymore. It's portrait this way portrait, you know 180 landscape this way landscape That way depending on your application supports different orientations But a lot of people tend to just test No portrait orientation because it makes sense this fits in your hand like this Comfortably, but if your application supports both or all of these orientations, it should be tested You know things can happen like this when you rotate the screen This is actually a true test that I was doing where actually put the Application into landscape in the screen one blank. So if I had never tested this we would have gone to production like this and Potentially a customer would be the one you know telling us there's an issue There's many resolutions now Tons of them and probably be 10 more tomorrow And if you're not testing these resolutions that your application supports You'll never know these issues exist You know us as humans, you know developers designers product people we make lots of subconscious choices We don't even know and so you designer potentially design something not taking an account that Their design might go on a very large mobile device Whereas the in the vice versa it might go on a very small device and they don't realize it So these things need to be found out and bad things could happen like this where This application was put onto Under resolution on a device out of the resolution that was way too big for it So it should have never been able to be even installed Operating versions or sorry Operating system versions There's what 15 or so now just Android alone So if your application supports all these different operating systems how you can actually know unless you actually not verify it Same goes for language You know if you have a multi-language app a lot of people tend to just you test in the language that they Are familiar with But how do you know it's gonna work for other languages like German for example German strings are predominantly longer than English strings So again the designer developer whoever it is made a subconscious Decision and didn't count for different languages string lengths that could completely break your layout of your views Same goes for like languages such as Arabic and Hebrew Which they are from right to left whereas Western languages are left to right again designers developers or whoever it is Maybe maybe maybe you've made subconscious decisions not accounting for those languages So as you can see just releasing a new version of an application. It's a you know, it's a test overload There's really so much to do and so little time to do it Especially if you're factoring an agile and trying to push out these new releases as fast as possible So you could possibly do this with UI automation You know create a test in JUnit loco test in G R-Spec whatever it is that you your choice But you would need it literally an army of engineers to pull it off Or if you have access to you could hire an army of zombie testers If you act now you get a discount code But automating every possible combination would be next to impossible to maintain so if you did pull it off Any future updates the application you're potentially talking about thousands of lines of code Thank God forbid. There's a major rewrite Then pretty much all your automations out the door and then lastly I want to talk about this topic is UI automation Only test what you program at the test So any assertions that you have in your JUnit R-Spec or whatever it is It's only explicitly gonna test that but the beauty with crawlers or monkey testers they test the unexpected They're gonna test for things that you never programmed will do and hopefully find issues that you never anticipated So now I'm getting into part about building it It just really couldn't be that hard You know my thought was I'll just get all the UI elements that are apparently on my view and I'll just loop through them You know click click in and look for some type of action to occur But that was the easy part but also really the core of any crawler So we're gonna go look at some examples now So those of you may have seen this before this is the hierarchy viewer and Android SDK there's other better ones now like the Appium desktop app has a nice hierarchy viewer This is doing the full hierarchy view So you could see all the layers of the layouts of your just this one view alone And you could see all the tributes of that object down Beneath and These are actually really good valuable information to know especially when you're building a crawler like is it clickable is it enabled Is it visible? It's and especially the bounds and the accessibility label does it has have an accessibility label doesn't have an ID So there's a lot of information just in this object alone So let's go ahead. Let's look at some elements now or let's program the program and actually look at form Here you doing a driver page source gives me a dump of the XML just like the hierarchy viewer displays in a nice worldly fashion There's also another method in the Ruby Appium Lib Called page which essentially parses that information and gives you a nice printout And I've used this for years to write my tests You know, I just go into the console I get all type page I get all the IDs or locators that are available in my application so I can write my tests at real time but Unfortunately, there's not enough information we turn on this page method to do a proper crawl So now we have the compressed hierarchy viewer as you can see this is a lot less information It's actually good because this is the only information that's relevant to the views that I actually need This only is giving me the objects that I can visibly see on the UI Again gives me all the tributes that I need So how do we do that programmatically? So the awesome Appium devs implemented this new capability or have this capability called ignore important views which give you a compressed If you just compress hierarchy So now this is great because now the crawler I can use this Unimportant views or the compressed hierarchy to get just the objects that I need to interact with and not all the other Fluff that was a part of the full one Here's just now I'm taking now I'm gonna create some code to Extend what Appium live live the Ruby bindings when I say Appium live they really live It's the Ruby bindings. I'm taking what they're giving me and I'm extending it to Essentially extract all those all the metadata or all the attributes about the objects that you saw at the hierarchy viewer Here I have highlighted where content description if that's returned that is your accessibility label So here I'm just taking the accessibility label of content description and Renaming the key as accessibility label. So in the future after I run my test or when it's running I know what's an accessibility label and what is not So let's go ahead and now use this new class. So here. I've already imported it Right now. It's going to die There's an option to put an array of locators I don't want so this is perfect if I don't want to click a certain sort of locator I have a way to exclude if it ever finds it what it's finding parsing So now I return an array of all my objects and these are the same objects that are on the compressed hierarchy view Have all the attributes if it's clickable Is it focused is it enabled its text its class and so forth So now this example here is showing you Taking that array and I'm finding the click a clickable object inside of it And then I'm just sampling it which is finding a random clickable object And now I'm gonna Interact and click this object So now you see I have the object there and it should click you know So that's the start So that block of code that you saw me just paste in now I'm gonna put it into a loop which is the basic premise of a crawl So this is just doing a 10 times do loop which is an easy Ruby block Essentially iterate 10 times through a block of code And now it's just going to find each object as it goes through each page and click click it And it's done. So that is basically crawling at the simplest form but the hard part So when you are trying to call an application, you know, you when you write in UI automation, you know The conditions usually you know what's gonna come up. So you write in conditions if statements But you don't know this when you're calling So there are so many edge cases or unknown conditionals that could occur Especially if you're trying to write this to automate or crawl through any application That's also difficult. It's a lot easier to Create a crawler knowing the application you're in crawl because you can write in all kinds of methods to deal with certain things about your application But it's also more difficult to do it for the crawl any application You know, how do I rescue the app if it gets stuck? So as you saw the crawler is is going step by step They could potentially get to a page that there are no elements and there's nothing for it to interact with So you have to put in some logic to rescue it, you know, basically put it back to a state where it could start crawling again You also have to know when a crash occurs because crawling you're running multiple threads or multiple processes If if your application crashes then potentially you're starting to crawl the you know dashboard of the of the Android you on hybrid web views so a lot of applications these days have web views built inside the native application So if you go into one of these web views and start clicking different objects in the web view Before you know it you could be crawling the entire internet So you have to you know put in some type of logic to handle one of these cases occur And then exiting the app by mistake. So a lot of apps you just have authentication You might click the log out button or you might click the back button too many times or the crawler might click Too many times puts the application out onto the home screen of the Android app So you have to have logic to Basically handle that and as you saw when I showed you the there was an exclude array You can put in the locators to in this array to not even display it when you get the heart or get the hierarchy of the page source And such a plan I just talked about So let's crawl. This is just an example of one of the many applications. I've crawled. It's a WordPress testing both landscape and portrait Hence the name of the crawls. It is a bit slow, but there's a lot happening. There's a lot. It's clicking on the metadata It's clicking screenshots performance data and so forth so Looking for changes the curve before it moves on So now we've crawled the great thing about it is now I have all my screenshots in all the different languages different operating systems landscape or portrait and now I could review these this information Find out if there's any bugs So like I said at the beginning where I was trying to clone myself to go out and try to test as much as possible I can now see what my application looks like in these different combinations. So here that keyboard was opened up so much that There was only a sliver These are things I could go to development to talk about to get fixed hopefully Here's my application and In a tablet so because application solves of both phones and tablets It's probably best that you maybe have a tablet version of that patient instead of both the phone and You know a combined application So you can see a lot of the images are stretched where as they add a more dedicated Design for a tablet. It probably looked a lot nicer This next example is just going to go into Arabic so I mentioned before so Arabic is from right to left In Western language, they're left to right.  There's some problems probably like most likely there's English showing up when it should be Arabic Or some of the UI flows are from left to right like the bottom left where it should be on the right side And because I could page the source I get the content description I know what has an accessible label or what doesn't and I know which views I map each view to the screenshots So I could identify the objects that have them And this just raises a good point because now I could go to the product person or developer or whoever It is that needs to know this and have a discussion with them about You know the UI on the right has almost every object on it has a label Identified by the red dot, but on the left only a few do so are Seen impaired users that need to have apps be more accessible Maybe we need that more So this is good information to know so you can approach your Make your application better Now you have application performance so It's not enough to just test your application you could have the best design best-looking application in the world It could function perfect and so forth, but if the performance stinks nobody's going to use it And so a lot of people I think tend to forget about performance testing when it is just as important as functional testing And the good thing about or what you should do with also with performance testing is benchmarking Since if you could capture the benchmark of your UI flows Then you can put this in some type of graph and keep a track of it So you know if your performance starts to increase or decrease or if it gets better This is just information. That's good to have So the crawler as it crawls through each UI it collects the performance So here it's getting that memory the app CPU and the user and system resources And it's also capturing the size of the APK file. And why is that important? That's important because The app stores have hard limits on how large an application could be to be uploaded or Also, the the size what it could be the download over the air through cellular So keeping track of application size You'll know if it's starting to creep up or decrease and now I have in that information you can then Approach the developer and talk about you know removing some content out of application. That's not eating more to help reduce the size So we go ahead and watch this run and since I have all the screenshots. I could actually Map the screenshots to every data point that I collect this information So now I know exactly where the application was when this performance spike hit or dropped And I could actually go into the UI and try to reproduce it So again, just having this information for benchmarking purposes is important. So You can keep track and make sure your application isn't starting to degrade So language detection So I was you know scanning all those generated screenshots finding any spelling mistakes or abnormalities Quite consuming, you know, it's helped. It's helped me, you know expanding, you know cloning myself, but It takes still takes a lot of time and also prone to human mistake You know, I could easily miss a spelling mistake or even if it's language I don't know. I won't know if it is a strong mistake or even the wrong language in some cases because some languages look very similar So I thought there had to be a better way of automating this part Well, just happened since I have all the the page source I had I have all the objects. I have all the strings. I know the UI that it's on I could take that information and then run it through Google translate To then create a report. So this application was in Spanish And there's literally only two Spanish words on this flow and everything else is English So because I could use Google translate to actually detect these strings You could come back and tell me whether you know anything that wasn't Spanish and report it back to me So now I don't have to rely on myself or find somebody that knows these languages I could use a machine to do it. Well, and there are other alternatives I use Google translate because they gave the best results, but At the time I was using a bunch of new modules. So there's a ton of open source translating libraries But they only work if you pass them like three or four Words like in the sentence they work well then do not work well with one word They don't give you back enough assurance for one word which most application like titles and stuff like that or one word So log monitoring Just as if you I tell everybody if you're manually testing an application or Exploratory testing or whatever you're doing or even with automation UI automation You should always capture the logs. You should always tail the logs. Look at the logs as you're testing Because so many issues go unnoticed why you are testing Could be API issues there could actually be exceptions. They just don't render on the front end And so the same applies when you crawl So because I'm actually monitoring the logs I could pick up exceptions or crashes and then I can handle them appropriately So this application specifically has a button to force it to crash So now it's going to click this crash button Detect that there is an exception thrown and then shut everything down So this is great because not only do I have all the screenshots? I have all the steps that it did to get to that point I now also have an exception and now with all this information the metadata I could send this to development to fix it But we want to also replay a crawl occasionally because I ran into an exception there Maybe I want to replay the last steps to see if I could reproduce it And this is also important if like it is an actual issue of the developer might fix it And I could replay exactly what I did or what the crawler did to for you know tests of the fix Happened it actually works So here it's going to Go and replay the exact same steps before you saw just the tail end of it This is going to do every step, but it will be pretty quick So it's going through every basically doing everything that it did before up until the crash in this case It's going to just it's going to crash again because I didn't fix I have but in theory if the developer did fix it It would then not crash so again, this is sort of like Exploratory testing or like I went through and oh, I found a crash or reported a bug and now I have to reproduce those steps So automatic tests Again reviewing all the screenshots every single language every resolution orientation Again became very cumbersome Again prone to human mistake us as humans were not made to do visual Detections, you know, we might think we are but we really not we're not made for it Machines are much better at doing this than we are So I thought how could I automate this process piece of the process more efficient? And since I work for the company it only made sense So now I could actually in theory I could create a baseline in every combination that we've talked about every language every orientation every resolution and I could have a baseline for that So I don't have to review these images anymore as I have been doing a Machine can do it for me and now if I capture these baselines And I run it again and there's issues that are detected by Apple tools I only have to review the ones that are broken and not the thousands that are potentially generated So here's a basic example something that I created a configuration that create Create an example of running the Apple tools tests in this particular case. I am Identifying when I'm on this activity and this ID is displayed and this text is shown take a snapshot well And actually so I have six tests here. So it works whenever I run it it actually identifies and captures the baselines based off of the test that I generated But now I want to test that it's broken. So I actually updated in the application We're in the test again in the crawler automatically detected that the UI Something broke. So now I don't have to actually do anything. It just goes and runs and detects any change occur However, something was still missing You know it started saying I wanted to build a crawler that was self-efficient basically could run and just do its thing And I want to then again get away from writing tests like I started You know, I didn't want to be that sad sad person anymore And then you know as you saw I was explicitly writing a test You know went on this view on this ID you shown if I had hundreds of those I'd have to refactor those if anything ever changed to my application So they get away from that. I had to absolutely know more about the application to be more deterministic So there is actually an awesome tool called APK tool And with this tool I could actually decompile my application Extract the layout the views essentially of my application And then whenever I'm running in getting the DOM of or not the DOM the page source of my application I can match it to the layouts that I've ever extracted So here's a general just diagram of Android layout. It's similar to the hierarchy that we saw in the hierarchy viewer and now using APK tool I could extract all the different layouts Which are returned as XML files, which I can then parse and then match my page source with the layouts returned And so now I have the hierarchy view which maps to my layouts that I've extracted Which then now I have a deterministic way to know exactly if I'm on the login view home page Whatever view of my application is and this will actually be a test for me And when I run the Apple tools again, it actually will detect that oh you're on this layout based off of the page source That's returning which then will produce a test Which then whenever I run the test in the future, it will be the same same page and same So it automatically will test itself at this point Without me having the right to line a code So this is probably the press the funnest part that I had creating the crawler. I think there's not enough emphasis in Monkey testing I think monkey testing frameworks are great. I think they find uncover a lot of issues I think we should use them more. Just it's part of our tool belt and this kind of brings me back to being a tester again Building this because I like to break things and that's what the chaos monkey does So the Android has this built in as their own, but I replicated the same thing Without using an app or tried to at least So on the left is snapchat on the right is Twitter and in the middle is just some random console output That's basically on the you know, it's just doing random swipes up and down random taps Clicks here. It's about to tweet best buy this Cute little kid and give I think it was almost close, but I never quite did it Here you can see on the left. It's just randomly tapping and it's doing all kinds of different interactions And this is good because this actually will stress test my application This will bring my application to you know, hopefully to its limits And you know because we don't know what our users are going to do our user We have crazy users out there. They could just do what this is doing to your applications, which you know, if we're using Some type of reporting tools or getting like analytics back We might see these crashes and we have no idea why they're happening So you can see here. It's just doing random top taps slash swipes Up and down the surface So how about scaling? It's you know as so far you've seen me run it all locally You know depending on the resources of your machine, you can you know run multiple Android Emulators or device real devices, whatever you have access to or multiple machines but like really it comes down to You know resources You know, so you could do this locally if you had to do it on all those combinations It might take a while to do Or you could run on a cloud service in this case the crawler can run on soft labs But again, you are your you are resource constrained because it's still it's a remote process You're still running it from your machine. So there is some CPU and memory and everything involved And how many processes and threads that your machine could actually execute? I Think the the good the sweet spot is actually containers So I there was an awesome talk last year at the Appian conference the Android Docker Repository I actually took that and put the crawler inside of it So in theory I can now spawn one to a thousand different containers of all different combinations all languages portrait landscape Capturing screenshots and all this going into Apple tools if I choose and I have baselines now that I could now clone myself a thousand times So some funny moments why I built in this So when you first create an application or a Twitter account You don't have anybody, you know, you're not following anybody So your feed would be blank but what Twitter does is they geolocate you and they Feed your feed based off of people around you Lucky for me the police department was in my feed And so I set the crawler off to go and tweet or do what it do a thing with Twitter I come back and I was like, oh cool. It looks like it tweeted and come find out a tweet of the police department So I quickly stopped it and deleted the tweet And also, I don't know if you notice some of the text that it prints out I use this gem or library called faker and it has a Class in it does that does hipster text So it's a bunch of random stuff. Oh And then just recently as I was preparing for this talk I ran it on Twitter again and lately there's this like Twitter feud or something going on between Justin Bieber and Tom Cruise Wanted in the fight in the octagon So I ran the Twitter ran the tweet or the bot on that and it Became obsessed with tweeting and liking all the Justin Bieber and Tom Cruise tweets And you saw my examples with WordPress. I made the mistake of using my personal account so as the as the Crawler was going through every account and go into these blogs and then clicking on the comment section Put in all the hipster texts. I had a bunch of people email me And ask me what was wrong with me So Word of advice don't use your personal accounts So conclusion Hopefully I've shown you there are benefits To creating these crawlers help you find more information or about your application and just help us leverage more machines You know, I built this the whole purpose wasn't replace you and I as humans or even UI automation There are purposes and there's places for those But really it's just adding another tool to our tool belt to help find more issues Such such fast-paced environment. We are and now and so I built this because I thought it should exist. I believed it should exist and Hopefully I've inspired some of you to create your own Or you know, I'd love help too. So if you guys want to help me make this better I appreciate it And so here are some helpful resources based off of some of the things I've talked about the page source parser example is just a small breakdown of Getting parsing the page source and getting the objects APK tool should I should be extra to decompile an application Again the Docker Android Awesome repository for easily putting your application into containers And then the app and crawler so everything that you've most of everything you used to say it just seen Is out there now on version one some things I will be introducing for a version two When I get time to work on it And then again, I'm looking for any help volunteers. It definitely would appreciate appreciate any help Thank you. I have some shiny pens to shiny pens in case anybody wants to these are Appletons pens with stylists. Hello. So this is Janet. So how do you make sure app has crawled all the screens? I mean, yes, you have captured all the screens of the application. How do you make sure that? Oh, how do I make sure it goes through every screen and it captured all the options like if I If we have context menus So we'll get all the context menus and we we see the difference if we select any of the item and press the context menu again Yeah, so what the crawler does is actually as you saw the simple loop as it's going through your action It will click an object. It will then detect if there's any changes from before to what it is now Capture a snapshot. I also collect, you know the activity that it's on Because that's the beginning when the crawlers first runs it actually captures all the activities of the view So it knows every activity that exists. I also know every layout exists So there's several different options that the crawler does so one night told you it detects a change It goes on it looks for a new activity if it's same activity doesn't check it off But right now the crawler there's there's two things that kill it one is a time limit You know, I get right let it run for five minutes ten minutes. The second is if an exception occurs Right now I do plan to eventually put it, you know because cuz I can't run it in multiple processes or Containers I could have it all contact in a central Reposit or central database and say no I've already been on this for you go on to the next few So you could in theory capture every type of view on your application and shut everything down So in some cases we need to log in and some input may need valid text So how do you do that? Yeah, so there is a configuration file if you go to the repository that I put on the Here It's a very bottom up in crawler Link there's a whole read me that tells you what you what you need to do But there is a small configuration file that you need if you need to log in you could set the log in steps So the logger the crawler will detect that you're on the login view go ahead log in and then continue the call. Okay, thank you Since you implemented this with apium. I was wondering how difficult you mentioned some Android specific things But in general would this work on let's say ui TV desktop iOS Mac apps, etc. Like what are the barriers towards doing this? Yeah, so that's also why I didn't implement it with apium because it's cross platform so in theory I could take this and I wouldn't say easily but do it for iOS and When app driver for Desktop Windows applications, so there are lots of possibilities. I have it on the roadmap to eventually do for iOS I mean Android alone just doing this was a ton of work and a lot of effort and I sort of was burned out from it I was a team want to dig into iOS yet, but especially now that you can run multiple simulators When I started this that didn't exist so having that actually would make it better and more powerful tool for iOS So one last question So I have a question regarding language localization which you have shown for Arabic so we do work on Arabic and Hebrew stuff So whenever we have a decision to make the decision itself is in the opposite direction So is there any intelligence built in which actually tells you whether to cancel a pop-up or Go in a different direction because language localization when you do so you have to Handle things intelligently because it's not English it goes in the wrong direction And how do you ensure when you are using Google translate whether the translation is perfect? Yeah, good question. So Because the crime because the crawler is getting just the objects from the page source It doesn't it doesn't know doesn't care what language it is. It doesn't care if it's left or right It's just gonna click click either yes or no Yeah, for the same reason like if it does keep accepting the same So I'm saying not for a crawler for for intelligent For a flow I'm saying if it isn't Hebrew and you are clicking it's it's a random click crawler Is a random click but but when you are actually testing and you have actually the elements with you The elements are in English because obviously elements are in English, but your language is basically neither in Hebrew or Arabic So how do you ensure like the flow which is going is perfect? Like you keep canceling something or a cube accepting something those kind of things right? I mean there's no because it's Undeterministic at some point because it's just gonna click randomly. There's no way to ensure that it's gonna be perfect That's what you I automations for explicitly writing a J unit host or whatever But the answer your question about real quick about the translation is because I put the application in Like say Spanish. I tell Google translate that I'm looking for Spanish strings And then it will keep return me back Essentially gonna return me back everything telling me if it's Spanish French, whatever and I extract Only the strings that don't come back in Spanish, and then I know those don't match Great, thank you