WEBVTT

1
00:00:01.120 --> 00:00:04.839
<v Speaker 1>How'd you like to listen to dot NetRocks with no ads? Easy?

2
00:00:05.360 --> 00:00:08.599
<v Speaker 1>Become a patron For just five dollars a month you

3
00:00:08.640 --> 00:00:11.359
<v Speaker 1>get access to a private RSS feed where all the

4
00:00:11.400 --> 00:00:14.599
<v Speaker 1>shows have no ads. Twenty dollars a month will get

5
00:00:14.640 --> 00:00:18.440
<v Speaker 1>you that and a special dot NetRocks patron mug. Sign

6
00:00:18.519 --> 00:00:22.640
<v Speaker 1>up now at Patreon dot dot NetRocks dot com. Hey,

7
00:00:22.760 --> 00:00:26.559
<v Speaker 1>Carl and Richard here with your twenty twenty four NDC schedule.

8
00:00:26.760 --> 00:00:29.480
<v Speaker 2>Will be at as many NDC conferences as possible this year,

9
00:00:29.519 --> 00:00:32.520
<v Speaker 2>and you should consider attending no matter what. The Copenhagen

10
00:00:32.560 --> 00:00:36.119
<v Speaker 2>Developers Festival happens August twenty sixth through the thirtieth. Tickets

11
00:00:36.159 --> 00:00:39.200
<v Speaker 2>at Cphdevfest dot com.

12
00:00:39.399 --> 00:00:43.759
<v Speaker 1>Ndcporto is happening October fourteenth through the eighteenth. The early

13
00:00:43.840 --> 00:00:49.479
<v Speaker 1>bird discount ends June fourteenth. Tickets at Ndcporto dot com.

14
00:00:49.520 --> 00:01:02.320
<v Speaker 3>And we'll see you there, we hope.

15
00:01:04.680 --> 00:01:07.680
<v Speaker 1>Hey, guess what it's Dot need rocks again. I'm Carl Franklin,

16
00:01:07.799 --> 00:01:12.280
<v Speaker 1>that Richard Campbell here for the nineteen hundredth and seventeenth time.

17
00:01:12.599 --> 00:01:15.239
<v Speaker 2>It's World War One. It's World War one. It it's

18
00:01:15.280 --> 00:01:22.079
<v Speaker 2>officially started. Okay, we're well into it at this point.

19
00:01:22.560 --> 00:01:26.680
<v Speaker 1>Yeah, you're right, yeah, yeah, right, So yeah, what's up

20
00:01:26.719 --> 00:01:29.200
<v Speaker 1>with you, mister Campbell. We just got back from Dev Intersection.

21
00:01:29.280 --> 00:01:31.879
<v Speaker 1>Had a great time there. Yeah, I had a great

22
00:01:31.879 --> 00:01:34.200
<v Speaker 1>time there. I was just writing up some of the pieces,

23
00:01:34.280 --> 00:01:38.040
<v Speaker 1>the keynotes and things. I mean, it's a crazy time, right,

24
00:01:38.159 --> 00:01:41.159
<v Speaker 1>Like the software is moving fast. Some of the demos

25
00:01:41.159 --> 00:01:43.480
<v Speaker 1>were astonishing. You had a good workshop, You're real happy

26
00:01:43.519 --> 00:01:45.760
<v Speaker 1>with it, very happy. Yeah, it's like thirty people in

27
00:01:45.799 --> 00:01:50.280
<v Speaker 1>it or something, and all about Blazer. Jeff Fritz did

28
00:01:50.280 --> 00:01:52.560
<v Speaker 1>a sort of an intro to Blazer workshop, and I

29
00:01:52.680 --> 00:01:56.879
<v Speaker 1>did a more more intermediate advanced workshop, and I also

30
00:01:56.959 --> 00:02:01.959
<v Speaker 1>had a talk called Gotcha's in Blazer Web Apps and

31
00:02:02.000 --> 00:02:04.799
<v Speaker 1>not at eight because there are some gotcha's. There are

32
00:02:04.840 --> 00:02:08.919
<v Speaker 1>some things that Microsoft intended to work a certain way

33
00:02:08.960 --> 00:02:12.639
<v Speaker 1>and then they didn't really work. So things that work around.

34
00:02:12.960 --> 00:02:15.599
<v Speaker 2>It's not that bleeding edge of technology anymore though. I

35
00:02:15.599 --> 00:02:17.599
<v Speaker 2>mean you're kind of at V three. Things are sort

36
00:02:17.599 --> 00:02:20.199
<v Speaker 2>of maturing out, like it's almost a grown up.

37
00:02:20.319 --> 00:02:22.080
<v Speaker 1>Yeah, And that's kind of why it was surprising that

38
00:02:22.120 --> 00:02:25.080
<v Speaker 1>we had gotcha's in the first place. But I think

39
00:02:25.120 --> 00:02:29.360
<v Speaker 1>they took everybody by surprise, not that there aren't workarounds

40
00:02:29.400 --> 00:02:32.120
<v Speaker 1>for it. But you know, it's not a reason not

41
00:02:32.159 --> 00:02:34.000
<v Speaker 1>to use Blazer, but you just need to know what

42
00:02:34.039 --> 00:02:34.319
<v Speaker 1>they are.

43
00:02:34.400 --> 00:02:37.680
<v Speaker 2>I think you've also got a moving surface around you too.

44
00:02:37.680 --> 00:02:39.919
<v Speaker 2>I've got the comment I've got will tie you into

45
00:02:39.960 --> 00:02:43.360
<v Speaker 2>that pretty well. Yeah, because there's things on change in

46
00:02:43.400 --> 00:02:44.120
<v Speaker 2>all the time.

47
00:02:44.039 --> 00:02:46.439
<v Speaker 1>And just to do a little plug, I'm also doing

48
00:02:46.479 --> 00:02:52.919
<v Speaker 1>that Gotcha's talk with on Sean Walker's virtual event on

49
00:02:52.960 --> 00:02:56.439
<v Speaker 1>October third. I don't have a time yet, but look

50
00:02:56.520 --> 00:02:59.800
<v Speaker 1>for that. Okay, okay, So let's get into it with

51
00:02:59.840 --> 00:03:02.039
<v Speaker 1>a little thing. We call it better no a framework.

52
00:03:02.120 --> 00:03:10.840
<v Speaker 2>Awesome, roll it all right, man?

53
00:03:10.879 --> 00:03:11.280
<v Speaker 3>What do you got?

54
00:03:11.439 --> 00:03:13.560
<v Speaker 1>Well, you know, this started out as me sort of

55
00:03:13.599 --> 00:03:15.919
<v Speaker 1>pointing to little things in the dot net framework. It

56
00:03:15.960 --> 00:03:18.879
<v Speaker 1>was even before dot net core, and quickly ran out

57
00:03:18.919 --> 00:03:20.960
<v Speaker 1>of stuff to talk about. So it just turns into

58
00:03:21.080 --> 00:03:24.759
<v Speaker 1>you know, hey, what caught my interest this week? I'd pointed.

59
00:03:24.879 --> 00:03:26.639
<v Speaker 2>It was not that quick. There was a period we

60
00:03:26.639 --> 00:03:29.240
<v Speaker 2>were doing three of these a week, and you went

61
00:03:29.280 --> 00:03:30.960
<v Speaker 2>through the whole flip and framework.

62
00:03:31.280 --> 00:03:34.039
<v Speaker 1>Yeah, pretty much. I mean the stuff that the stuff

63
00:03:34.080 --> 00:03:35.199
<v Speaker 1>that was tricky.

64
00:03:35.120 --> 00:03:37.560
<v Speaker 2>Yeah, several years worth of content.

65
00:03:37.800 --> 00:03:41.719
<v Speaker 1>Yeah, you're right. Okay, So I found this event in

66
00:03:42.159 --> 00:03:45.159
<v Speaker 1>the twenty through the twenty sixth of January coming up here.

67
00:03:45.479 --> 00:03:47.800
<v Speaker 1>It's called Global Game Jam.

68
00:03:48.039 --> 00:03:48.919
<v Speaker 2>Oh, that sounds fun.

69
00:03:49.120 --> 00:03:52.520
<v Speaker 1>Globalgamejam dot org. And so just like when musicians get

70
00:03:52.560 --> 00:03:55.560
<v Speaker 1>together and have jam sessions and they feed on each

71
00:03:55.599 --> 00:03:59.520
<v Speaker 1>other and get creative together and good stuff comes out,

72
00:03:59.560 --> 00:04:05.560
<v Speaker 1>that's the whole idea with this. It's it's there's sort

73
00:04:05.639 --> 00:04:10.199
<v Speaker 1>of like four hundred and thirty nine thousand jammers. Wow,

74
00:04:10.360 --> 00:04:14.439
<v Speaker 1>this is to date, eighty nine thousand games created, one

75
00:04:14.520 --> 00:04:20.120
<v Speaker 1>hundred and thirty two countries participated. So it's it's all

76
00:04:20.160 --> 00:04:23.040
<v Speaker 1>online of course, and they have a discord and a

77
00:04:23.079 --> 00:04:30.120
<v Speaker 1>Twitch stream, and they have videos from last year keynote.

78
00:04:31.439 --> 00:04:33.480
<v Speaker 1>It's just it looks like a lot of fun. And

79
00:04:33.560 --> 00:04:37.639
<v Speaker 1>the thing is too that it's not just for gamers

80
00:04:37.720 --> 00:04:42.879
<v Speaker 1>who you know, who have experience like this is for

81
00:04:43.000 --> 00:04:46.120
<v Speaker 1>people who might be just game curious, like they don't

82
00:04:46.120 --> 00:04:47.720
<v Speaker 1>know how games are created at all.

83
00:04:47.920 --> 00:04:50.519
<v Speaker 2>And the tooling these days is so good, like, yeah,

84
00:04:51.120 --> 00:04:54.160
<v Speaker 2>don't need a huge team, you can do it by yourself,

85
00:04:54.160 --> 00:04:56.279
<v Speaker 2>although I've seen lots of teams of three be very

86
00:04:56.279 --> 00:05:00.360
<v Speaker 2>successful and make it maybe a mobile game, make a

87
00:05:00.360 --> 00:05:02.720
<v Speaker 2>web game, like there's a lot of choices right.

88
00:05:03.079 --> 00:05:05.800
<v Speaker 1>Yeah, so that looks really cool. I might pop in

89
00:05:05.839 --> 00:05:08.839
<v Speaker 1>and check it out and maybe create some games. Might

90
00:05:08.879 --> 00:05:09.199
<v Speaker 1>be fun.

91
00:05:09.279 --> 00:05:10.120
<v Speaker 2>Yeah, that's a good idea.

92
00:05:10.240 --> 00:05:10.480
<v Speaker 3>Yep.

93
00:05:10.839 --> 00:05:11.959
<v Speaker 1>So who's talking to us today?

94
00:05:12.040 --> 00:05:15.040
<v Speaker 2>Richard and Grab a comment of a show eighteen fifteen,

95
00:05:15.120 --> 00:05:18.680
<v Speaker 2>So about one hundred shows ago with our friend Debbie O'Brien.

96
00:05:18.720 --> 00:05:20.240
<v Speaker 2>Maybe you heard of her, Yeah, and we were talking

97
00:05:20.240 --> 00:05:22.240
<v Speaker 2>about play Right. This is back from October in twenty

98
00:05:22.240 --> 00:05:25.000
<v Speaker 2>two and I got a few good comments on the show,

99
00:05:25.040 --> 00:05:27.319
<v Speaker 2>but this one was very specific. Admittedly it's over a

100
00:05:27.360 --> 00:05:28.959
<v Speaker 2>year ago now. This is from Chris Martin. He said,

101
00:05:29.120 --> 00:05:30.759
<v Speaker 2>just getting into play right and it was great listening

102
00:05:30.800 --> 00:05:32.439
<v Speaker 2>to the episode of Dot and Rocks on it. I'm

103
00:05:32.480 --> 00:05:36.879
<v Speaker 2>currently getting this implemented for a Blazer app. What's the

104
00:05:36.920 --> 00:05:41.199
<v Speaker 2>babe for authenticating with azure ad in our tests? Thanks?

105
00:05:41.879 --> 00:05:46.800
<v Speaker 2>And Carl responded to this actually back then talking about

106
00:05:47.560 --> 00:05:51.480
<v Speaker 2>azure ad B two c of through Blazer training include

107
00:05:51.480 --> 00:05:53.720
<v Speaker 2>a link in the show notes for that particular show.

108
00:05:54.680 --> 00:05:57.680
<v Speaker 2>Although it's changing, it's been a year.

109
00:05:57.839 --> 00:05:59.720
<v Speaker 1>Yeah, it's changed and stuff's changed.

110
00:06:00.040 --> 00:06:00.240
<v Speaker 3>Yeah.

111
00:06:01.839 --> 00:06:04.680
<v Speaker 1>We went through this period where we were using MSAL,

112
00:06:04.800 --> 00:06:08.600
<v Speaker 1>the Microsoft Authentication Library right as a way to simplify

113
00:06:09.720 --> 00:06:12.519
<v Speaker 1>accessing it, and now there's even more stuff that's like

114
00:06:12.639 --> 00:06:14.920
<v Speaker 1>I haven't even i mean even kept up with it.

115
00:06:14.959 --> 00:06:16.079
<v Speaker 1>That's how new it is.

116
00:06:16.199 --> 00:06:21.279
<v Speaker 2>Well, they call it an intra now, and so in

117
00:06:21.319 --> 00:06:25.480
<v Speaker 2>some ways it's clearly better. I think definitely. My repertoire

118
00:06:25.480 --> 00:06:28.120
<v Speaker 2>for the show's coming up is a whole conversation about

119
00:06:28.160 --> 00:06:31.759
<v Speaker 2>managed identity. Yeah, specific And it's one thing to manage

120
00:06:31.800 --> 00:06:34.639
<v Speaker 2>identity in production. It's another thing to talk about managed

121
00:06:34.680 --> 00:06:39.120
<v Speaker 2>identity in tests and in the dev cycle. But you've

122
00:06:39.160 --> 00:06:43.600
<v Speaker 2>heard on the news this whole Microsoft Future Security Initiative

123
00:06:43.800 --> 00:06:47.560
<v Speaker 2>or Insecure Initiative, and a lot of that has to

124
00:06:47.600 --> 00:06:53.319
<v Speaker 2>do with undersecured dev resources, demos things like that. So

125
00:06:53.439 --> 00:06:56.120
<v Speaker 2>Microsoft is pushing hard for their own people to do

126
00:06:56.160 --> 00:06:56.879
<v Speaker 2>this better.

127
00:06:56.720 --> 00:06:57.839
<v Speaker 1>Yeah, across all teams.

128
00:06:57.920 --> 00:07:00.839
<v Speaker 2>Yeah yeah, and to be that's super exciting because they're

129
00:07:00.879 --> 00:07:03.360
<v Speaker 2>going to knock the snot out of this process, like

130
00:07:03.360 --> 00:07:06.000
<v Speaker 2>they're going to make it better for their own needs.

131
00:07:06.079 --> 00:07:07.879
<v Speaker 2>That means it's going to be better for all of us.

132
00:07:08.000 --> 00:07:10.120
<v Speaker 1>I mean we're talking about people who write white papers,

133
00:07:10.160 --> 00:07:14.040
<v Speaker 1>who publish examples, who you know, maybe do this stuff

134
00:07:14.040 --> 00:07:19.279
<v Speaker 1>with three sixty the developer team obviously, Yeah, I know

135
00:07:19.639 --> 00:07:22.079
<v Speaker 1>I know my friend Jeff Fritz is in that.

136
00:07:22.519 --> 00:07:25.399
<v Speaker 2>Yep, lots of folks that are buried in it right now.

137
00:07:25.399 --> 00:07:28.079
<v Speaker 2>And and again it's like there's a there's a feedback

138
00:07:28.120 --> 00:07:30.439
<v Speaker 2>loop here. Not only should they follow the practices, but

139
00:07:30.480 --> 00:07:33.920
<v Speaker 2>when the practices are just too awkward to use, they

140
00:07:33.959 --> 00:07:36.680
<v Speaker 2>know where those guys live, Like they'll lay in wait

141
00:07:36.720 --> 00:07:38.600
<v Speaker 2>in the bushes outside of the office building.

142
00:07:38.600 --> 00:07:40.800
<v Speaker 1>They'll tackle too soon, too soon.

143
00:07:41.240 --> 00:07:43.759
<v Speaker 2>No, No, I'm just saying, like I watched what happened

144
00:07:43.759 --> 00:07:46.560
<v Speaker 2>to WPF back in the day when the studio team

145
00:07:46.600 --> 00:07:51.519
<v Speaker 2>started implementing WPF, WPF got dramatically better, and it was

146
00:07:51.560 --> 00:07:52.639
<v Speaker 2>that back and forth.

147
00:07:52.720 --> 00:07:55.360
<v Speaker 1>Hey, if you want to go way back when sql

148
00:07:55.399 --> 00:08:00.519
<v Speaker 1>server implemented the dot Net framework inside SQL servert got

149
00:08:00.560 --> 00:08:03.240
<v Speaker 1>better well, without a doubt, because the sequel team kicked

150
00:08:03.279 --> 00:08:03.720
<v Speaker 1>its butt.

151
00:08:03.879 --> 00:08:07.560
<v Speaker 2>Yeah, no doubt. So anyway, I'm hopeful. Yeah, and Chris,

152
00:08:07.560 --> 00:08:09.040
<v Speaker 2>thank you so much for your commented. A copy of

153
00:08:09.120 --> 00:08:10.519
<v Speaker 2>music Cobe is on its way to you. And if

154
00:08:10.519 --> 00:08:12.120
<v Speaker 2>you'd like a copy of music code by I write

155
00:08:12.120 --> 00:08:14.240
<v Speaker 2>a comment on the website at dot at rocks dot

156
00:08:14.240 --> 00:08:16.519
<v Speaker 2>com or on Facebook. We publish every show there and

157
00:08:16.560 --> 00:08:18.319
<v Speaker 2>if you comment there in a reason the show. We'll

158
00:08:18.360 --> 00:08:19.399
<v Speaker 2>send you a copy music cope.

159
00:08:19.399 --> 00:08:22.360
<v Speaker 1>He's code by still going strong and people using it

160
00:08:22.439 --> 00:08:25.079
<v Speaker 1>every day to be more productive when they code or

161
00:08:25.120 --> 00:08:28.680
<v Speaker 1>sleep or relax or focus or whatever. All right, so

162
00:08:29.079 --> 00:08:32.240
<v Speaker 1>let's bring in Wi O'Brien. Before I do that, though,

163
00:08:32.279 --> 00:08:34.320
<v Speaker 1>I need to mention that you can follow us on Twitter,

164
00:08:34.919 --> 00:08:38.159
<v Speaker 1>and of course we've been on ex Twitter for years.

165
00:08:38.279 --> 00:08:41.840
<v Speaker 1>But the cool kids are hanging out at Masdon. I'm

166
00:08:41.919 --> 00:08:44.240
<v Speaker 1>Carl Franklin at tech Hub dot Social.

167
00:08:43.919 --> 00:08:45.720
<v Speaker 2>And I'm Riche Campbell at Masidon dot Angele.

168
00:08:45.840 --> 00:08:48.399
<v Speaker 1>Okay, so Debbie has been on the show before, of course,

169
00:08:48.440 --> 00:08:51.039
<v Speaker 1>but if you don't remember, Wi O'Brien is a Principal

170
00:08:51.039 --> 00:08:54.759
<v Speaker 1>program manager at Microsoft. Wie has over fifteen years of

171
00:08:54.799 --> 00:08:58.200
<v Speaker 1>experience in front end development. She's worked as a tech

172
00:08:58.279 --> 00:09:01.200
<v Speaker 1>lead and consultant for many important and clients with various

173
00:09:01.240 --> 00:09:05.799
<v Speaker 1>technologies and often with a strong focus on performance, static

174
00:09:05.879 --> 00:09:10.240
<v Speaker 1>sites and testing. She has led teams both in house

175
00:09:10.360 --> 00:09:13.960
<v Speaker 1>and remotely, as well as giving workshops and training. Also

176
00:09:14.039 --> 00:09:16.759
<v Speaker 1>has many years of experience as a mentor for online

177
00:09:16.840 --> 00:09:21.519
<v Speaker 1>learning platforms, Treehouse and open classrooms. Debbie's also a Google

178
00:09:21.600 --> 00:09:27.279
<v Speaker 1>developer expert in web technologies, cloud andary Media Developer Expert

179
00:09:27.360 --> 00:09:31.639
<v Speaker 1>and next Ambassador. Boy, there's a mouthful, as well as

180
00:09:31.679 --> 00:09:35.559
<v Speaker 1>a GitHub Star alumni and a previous Microsoft Most Valuable

181
00:09:35.559 --> 00:09:40.200
<v Speaker 1>Professional and Developer Technologies Debbie, I think you need to

182
00:09:40.200 --> 00:09:43.080
<v Speaker 1>be a little more What should we say, you know,

183
00:09:43.200 --> 00:09:44.480
<v Speaker 1>just try try a little harder.

184
00:09:44.679 --> 00:09:47.799
<v Speaker 4>I think I know, right, I'm trying to get the

185
00:09:47.840 --> 00:09:49.919
<v Speaker 4>YouTube Award. That's my next one, you know that like

186
00:09:49.960 --> 00:09:52.960
<v Speaker 4>big thing on one hundred thousand followers. I've got five thousand,

187
00:09:53.000 --> 00:09:54.399
<v Speaker 4>so got a long way to go. But yeah, I

188
00:09:54.440 --> 00:09:55.240
<v Speaker 4>need more awards.

189
00:09:55.840 --> 00:09:59.159
<v Speaker 2>Yeah.

190
00:09:59.279 --> 00:10:01.919
<v Speaker 1>I tell people the kind of the same way. I

191
00:10:02.000 --> 00:10:03.399
<v Speaker 1>just don't know what I want to do when I

192
00:10:03.440 --> 00:10:05.840
<v Speaker 1>grow up. I certainly haven't grown up yet.

193
00:10:07.639 --> 00:10:08.440
<v Speaker 2>Why start now?

194
00:10:08.639 --> 00:10:13.840
<v Speaker 1>Why start now? Yes, we're talking about Playwright, and Playwright

195
00:10:13.960 --> 00:10:20.320
<v Speaker 1>is sort of the canonical web testing and automation actually

196
00:10:20.519 --> 00:10:24.840
<v Speaker 1>platform that does snapshot testing, like we talked about with

197
00:10:25.399 --> 00:10:27.840
<v Speaker 1>our friend Simon Crop, and it does all sorts of

198
00:10:27.879 --> 00:10:30.559
<v Speaker 1>other things. Why don't you tell us what's on your

199
00:10:30.559 --> 00:10:31.960
<v Speaker 1>mind in terms of Playwright?

200
00:10:32.279 --> 00:10:36.000
<v Speaker 4>Yeah? So, I mean everyone should already at this stage

201
00:10:36.039 --> 00:10:39.879
<v Speaker 4>be testing their applications, because there's absolutely no excuse in

202
00:10:39.919 --> 00:10:43.320
<v Speaker 4>the whole world why people are not testing right. Go

203
00:10:43.440 --> 00:10:46.360
<v Speaker 4>back a couple of years, like ten years ago, no

204
00:10:46.399 --> 00:10:49.559
<v Speaker 4>one was testing, and I completely understood that because testing

205
00:10:49.679 --> 00:10:53.240
<v Speaker 4>was hard. Testing to time testing, the slow testing costs money.

206
00:10:53.600 --> 00:10:56.039
<v Speaker 4>And now it's the opposite. If you're not testing your application,

207
00:10:56.080 --> 00:10:59.559
<v Speaker 4>you're losing money as a company. You're dealing with bugs

208
00:10:59.559 --> 00:11:03.240
<v Speaker 4>that you should and even have to deal with. So yeah,

209
00:11:03.279 --> 00:11:05.799
<v Speaker 4>I've been trying to get people to test their applications

210
00:11:05.879 --> 00:11:10.200
<v Speaker 4>and I think still there's people not testing. I don't

211
00:11:10.200 --> 00:11:12.480
<v Speaker 4>know how to fix Carl Richard, how do we fix this?

212
00:11:13.639 --> 00:11:16.399
<v Speaker 1>I think most people assume and I'm going to assume

213
00:11:16.440 --> 00:11:19.799
<v Speaker 1>that they assume that, well, why should I test? Because

214
00:11:19.879 --> 00:11:23.200
<v Speaker 1>I know this routine or this method or creates this

215
00:11:23.399 --> 00:11:26.399
<v Speaker 1>UI result. Why do I need to prove it? Right now?

216
00:11:26.480 --> 00:11:28.919
<v Speaker 1>I can see that it works. But the question is, well,

217
00:11:29.480 --> 00:11:32.000
<v Speaker 1>how will you know when some other developer takes over

218
00:11:32.080 --> 00:11:35.000
<v Speaker 1>your project and does something on the back end that

219
00:11:35.120 --> 00:11:41.159
<v Speaker 1>changes the outcome? That's when testing becomes really valuable, right, yeah.

220
00:11:40.919 --> 00:11:44.799
<v Speaker 4>And just changing like little like think about forms, right,

221
00:11:45.320 --> 00:11:48.720
<v Speaker 4>Forms are one of the hardest things to test manually.

222
00:11:49.399 --> 00:11:50.799
<v Speaker 4>And I don't know if you've ever done this a

223
00:11:50.840 --> 00:11:53.039
<v Speaker 4>manual test and you start manually and what I mean

224
00:11:53.080 --> 00:11:55.159
<v Speaker 4>by manual is going to the computer's a user and

225
00:11:55.159 --> 00:11:57.720
<v Speaker 4>filling it that form and then you find out the

226
00:11:57.759 --> 00:12:00.159
<v Speaker 4>typical For me, it happened to me today. I was

227
00:12:00.159 --> 00:12:02.840
<v Speaker 4>putting my name in. I have an apostrophe in my name. Well,

228
00:12:02.919 --> 00:12:05.759
<v Speaker 4>nobody tested the web and I couldn't put a specific

229
00:12:05.879 --> 00:12:08.919
<v Speaker 4>type of apostrophe in. It wasn't accepting it, so it

230
00:12:08.919 --> 00:12:12.679
<v Speaker 4>wouldn't accept my name, right, And nobody tested that, so

231
00:12:12.799 --> 00:12:14.799
<v Speaker 4>I couldn't. I couldn't just couldn't get in. I had

232
00:12:14.799 --> 00:12:16.720
<v Speaker 4>to like go to the actual computer. I couldn't do

233
00:12:16.720 --> 00:12:17.879
<v Speaker 4>it for my phone, had to go to the computer

234
00:12:17.960 --> 00:12:19.960
<v Speaker 4>where I had had more access. I was able to

235
00:12:20.039 --> 00:12:22.480
<v Speaker 4>do it. But when you're actually testing that out manually,

236
00:12:22.480 --> 00:12:24.200
<v Speaker 4>you're filling in all those things and then you press

237
00:12:24.200 --> 00:12:26.600
<v Speaker 4>submit and you get this error message and then something

238
00:12:26.679 --> 00:12:28.399
<v Speaker 4>is broken, and then you go in and you fix it,

239
00:12:28.440 --> 00:12:30.480
<v Speaker 4>and then you go and fill that it again, and

240
00:12:30.519 --> 00:12:33.679
<v Speaker 4>you keep doing that process, a repetible, horrible process that

241
00:12:33.759 --> 00:12:35.519
<v Speaker 4>I used to do, that you used to do back

242
00:12:35.559 --> 00:12:37.960
<v Speaker 4>in the old days, when you know, that was the

243
00:12:37.960 --> 00:12:40.679
<v Speaker 4>only way we could do things. But now you have

244
00:12:40.759 --> 00:12:44.320
<v Speaker 4>tools such as Playwright that basically is an extremely fast

245
00:12:44.360 --> 00:12:48.399
<v Speaker 4>you right, it is you times one hundred and that

246
00:12:48.519 --> 00:12:51.679
<v Speaker 4>can fill that form in one hundred times faster. So

247
00:12:51.799 --> 00:12:56.039
<v Speaker 4>that basically is automated. Once you write that test, that

248
00:12:56.080 --> 00:12:58.200
<v Speaker 4>form is filled in. And this is the cool thing

249
00:12:58.840 --> 00:13:01.919
<v Speaker 4>that you basically to that test. You just manually fill

250
00:13:01.919 --> 00:13:05.080
<v Speaker 4>in that form once and you do that by using

251
00:13:05.159 --> 00:13:09.360
<v Speaker 4>the code generator tool. You code gen the test by

252
00:13:09.399 --> 00:13:11.399
<v Speaker 4>filling in that form, it's going to generate all that

253
00:13:11.480 --> 00:13:14.080
<v Speaker 4>code for you, and then you just basically press play,

254
00:13:14.200 --> 00:13:16.960
<v Speaker 4>press play and on your CI it just runs anytime

255
00:13:17.000 --> 00:13:19.919
<v Speaker 4>the pull request is done in so if someone changes anything,

256
00:13:20.399 --> 00:13:23.120
<v Speaker 4>it's going to run that and it saves so much

257
00:13:23.159 --> 00:13:26.279
<v Speaker 4>time and it's so easy and quick to do it. Yeah.

258
00:13:26.320 --> 00:13:30.039
<v Speaker 1>So the thing that occurs to me about web testing

259
00:13:30.080 --> 00:13:33.559
<v Speaker 1>tools like Playwright is that they have an advantage because

260
00:13:33.600 --> 00:13:38.000
<v Speaker 1>they can inspect the HTML, which is just text. You know,

261
00:13:38.039 --> 00:13:40.440
<v Speaker 1>they can inspect the output, whereas if you're trying to

262
00:13:40.480 --> 00:13:43.639
<v Speaker 1>do that, say on a Windows forms application or graphical application,

263
00:13:44.200 --> 00:13:47.039
<v Speaker 1>you have to do image you know, ocr for the

264
00:13:47.320 --> 00:13:50.240
<v Speaker 1>for the text and image processing and all of that

265
00:13:50.320 --> 00:13:52.159
<v Speaker 1>kind of stuff, and we just don't need to do

266
00:13:52.200 --> 00:13:55.399
<v Speaker 1>that with you get. You can still do screenshot testing, right.

267
00:13:55.440 --> 00:13:57.279
<v Speaker 1>You can say well, the screen should look like this,

268
00:13:58.080 --> 00:14:01.600
<v Speaker 1>but you have that the webliner allows you to be

269
00:14:01.639 --> 00:14:02.559
<v Speaker 1>a lot more accurate.

270
00:14:03.039 --> 00:14:05.120
<v Speaker 4>It brings it closer to the user. And what we're

271
00:14:05.120 --> 00:14:08.480
<v Speaker 4>doing when we're testing Blaser applications, right, we're testing what

272
00:14:08.519 --> 00:14:12.039
<v Speaker 4>the user sees, what the user does. Simple thing is

273
00:14:12.080 --> 00:14:14.519
<v Speaker 4>testing dark mode and lightmode. This is the cool thing

274
00:14:14.600 --> 00:14:17.159
<v Speaker 4>right nowadays everyone has to have their website in two colors, right,

275
00:14:17.960 --> 00:14:20.200
<v Speaker 4>how can we test that? Well, we can test that

276
00:14:20.240 --> 00:14:22.720
<v Speaker 4>the CSS class is there and that can be done

277
00:14:22.759 --> 00:14:25.600
<v Speaker 4>true playwright, and then you can just easily have a test. Yeah,

278
00:14:25.639 --> 00:14:27.960
<v Speaker 4>that's dark mode, light moode. That's a simple test.

279
00:14:28.039 --> 00:14:28.200
<v Speaker 3>Right.

280
00:14:28.279 --> 00:14:31.639
<v Speaker 4>You do you care? Well, maybe you should if that's

281
00:14:31.679 --> 00:14:35.879
<v Speaker 4>important to you. What's more important is, you know, filling

282
00:14:35.919 --> 00:14:38.639
<v Speaker 4>out the forms, making money, putting articles in a shopping car,

283
00:14:39.200 --> 00:14:43.279
<v Speaker 4>actually purchasing things, and that's what the user does. What

284
00:14:43.320 --> 00:14:45.639
<v Speaker 4>buttons does the user need to press to get to

285
00:14:46.039 --> 00:14:49.279
<v Speaker 4>that payment? And if you can test that whole process

286
00:14:49.279 --> 00:14:51.519
<v Speaker 4>from that start to finish, the money is going to

287
00:14:51.559 --> 00:14:52.080
<v Speaker 4>be in your bank.

288
00:14:52.720 --> 00:14:56.279
<v Speaker 2>Yeah. Well, I mean lots of friction you can remove

289
00:14:56.279 --> 00:14:58.919
<v Speaker 2>in that process. And turns out if it's easy to buy,

290
00:14:58.960 --> 00:15:02.440
<v Speaker 2>people do buy more. So you know there's money to

291
00:15:02.480 --> 00:15:05.679
<v Speaker 2>be made in creating good workflows that way, right. I

292
00:15:05.799 --> 00:15:08.240
<v Speaker 2>just think these are the tools that help you detect

293
00:15:08.279 --> 00:15:10.759
<v Speaker 2>where you're stumbling before you push it out there and

294
00:15:10.759 --> 00:15:11.759
<v Speaker 2>start losing money on it.

295
00:15:11.799 --> 00:15:14.799
<v Speaker 1>Now. I use a tool called b unit from Egil

296
00:15:14.799 --> 00:15:20.159
<v Speaker 1>Hanson for Blazer components. Does that work in concert with playwright?

297
00:15:20.440 --> 00:15:23.639
<v Speaker 1>Is there something that does what b unit does in Playwright?

298
00:15:24.120 --> 00:15:28.399
<v Speaker 1>What's the whole ecosystem look like with that?

299
00:15:29.399 --> 00:15:35.799
<v Speaker 4>So for component testing itself, we don't really support anything

300
00:15:35.840 --> 00:15:40.120
<v Speaker 4>outside of the experimental, which is kind of you and

301
00:15:40.240 --> 00:15:42.039
<v Speaker 4>like the component testing yourself. I'm not sure if you

302
00:15:42.080 --> 00:15:45.080
<v Speaker 4>can put a Blazer thing inside of vat application that's

303
00:15:45.200 --> 00:15:49.320
<v Speaker 4>something and push that up. That's something I've never tested out.

304
00:15:50.600 --> 00:15:53.600
<v Speaker 4>But we're basically like, when it comes to a Blazer,

305
00:15:54.399 --> 00:15:57.519
<v Speaker 4>you're testing what the user sees. That's already compiled, that's there,

306
00:15:57.600 --> 00:16:00.399
<v Speaker 4>it's visual, it's on that front end. So you're coponents

307
00:16:00.440 --> 00:16:02.679
<v Speaker 4>are making up a web page. Your components are making

308
00:16:02.720 --> 00:16:06.120
<v Speaker 4>a story, and that story is taking you. It's more

309
00:16:06.159 --> 00:16:10.200
<v Speaker 4>about the integration between those components. Sure, how they integrate

310
00:16:10.200 --> 00:16:13.360
<v Speaker 4>together and when on the page they do what they're

311
00:16:13.399 --> 00:16:15.720
<v Speaker 4>meant to do. That button is a component. For example,

312
00:16:15.759 --> 00:16:19.519
<v Speaker 4>that shopping cart is a component, and that all interacts

313
00:16:19.559 --> 00:16:21.759
<v Speaker 4>together to be able to get to that stage of

314
00:16:22.519 --> 00:16:25.360
<v Speaker 4>filling out the form, to fill in your delivery address

315
00:16:25.399 --> 00:16:28.720
<v Speaker 4>to get the product delivered to your home, etc.

316
00:16:29.240 --> 00:16:31.759
<v Speaker 1>So you can still a b unit test to test

317
00:16:31.799 --> 00:16:34.559
<v Speaker 1>the individual components if you think you need to. But

318
00:16:34.679 --> 00:16:37.399
<v Speaker 1>what you're saying is playwright works the macro level. It

319
00:16:37.519 --> 00:16:39.799
<v Speaker 1>just works at the whole website. You fill in this form,

320
00:16:39.840 --> 00:16:42.679
<v Speaker 1>you expect this result. If you don't get it, then

321
00:16:42.879 --> 00:16:43.759
<v Speaker 1>the test breaks.

322
00:16:43.919 --> 00:16:46.320
<v Speaker 4>Yeah, Like think about it. The user doesn't care about

323
00:16:46.320 --> 00:16:49.399
<v Speaker 4>your code, doesn't see your code. So unit tests is

324
00:16:49.480 --> 00:16:52.600
<v Speaker 4>not covering what the user sees and does. It covers

325
00:16:52.639 --> 00:16:54.559
<v Speaker 4>your code and is your code going to do the

326
00:16:54.679 --> 00:16:58.120
<v Speaker 4>job right? But end to end test integation tests, they're

327
00:16:58.159 --> 00:17:02.240
<v Speaker 4>covering what the use physically does in your website. And

328
00:17:02.320 --> 00:17:05.839
<v Speaker 4>it's like manual testing years ago when I used to

329
00:17:05.880 --> 00:17:08.680
<v Speaker 4>do this on a Friday right in a job ten

330
00:17:08.759 --> 00:17:12.200
<v Speaker 4>years ago. Everyone stop, stop we are doing and start

331
00:17:12.359 --> 00:17:14.960
<v Speaker 4>using the website as a user would use it. Go

332
00:17:15.000 --> 00:17:18.000
<v Speaker 4>and start doing stuff right and then fill out issues.

333
00:17:18.039 --> 00:17:20.119
<v Speaker 4>Oh this doesn't work, file boog, this doesn't work. File

334
00:17:20.119 --> 00:17:23.920
<v Speaker 4>a bug. That's ridiculous doing that nowadays, and still people

335
00:17:23.960 --> 00:17:26.599
<v Speaker 4>are doing that. Still people are paying manual people to

336
00:17:26.640 --> 00:17:29.759
<v Speaker 4>press buttons, and that should not be happening. So Playwright

337
00:17:29.839 --> 00:17:33.160
<v Speaker 4>is that manual person pressing the button. But that's much

338
00:17:33.200 --> 00:17:35.920
<v Speaker 4>faster than that manual, physical person that would have done

339
00:17:35.960 --> 00:17:36.799
<v Speaker 4>that ten years ago.

340
00:17:36.920 --> 00:17:38.519
<v Speaker 2>One of the things I run into when we start

341
00:17:38.559 --> 00:17:40.599
<v Speaker 2>to build bigger websites is we have so many tests

342
00:17:40.640 --> 00:17:44.200
<v Speaker 2>that it slows down the CICD pipeline. I've gone to

343
00:17:44.279 --> 00:17:47.440
<v Speaker 2>great lengths to like break tests out across ponstible instances

344
00:17:47.440 --> 00:17:49.359
<v Speaker 2>and things to try and shorten that time up. Is

345
00:17:49.400 --> 00:17:51.400
<v Speaker 2>there tools in play right to make that easier.

346
00:17:51.640 --> 00:17:55.279
<v Speaker 4>Yeah, so's there's things you can do. Like basically, you've

347
00:17:55.279 --> 00:17:58.160
<v Speaker 4>got to remember what's the slowest thing about testing when

348
00:17:58.200 --> 00:18:00.559
<v Speaker 4>it comes to to Playwright, it's the brows right, It's

349
00:18:00.640 --> 00:18:04.519
<v Speaker 4>it's you know, you're normally you should be testing as

350
00:18:04.599 --> 00:18:07.279
<v Speaker 4>well your website across multiple browsers, you know, across the

351
00:18:07.319 --> 00:18:12.160
<v Speaker 4>fire across Firefox, across Chromium. And once you're doing that,

352
00:18:12.200 --> 00:18:15.960
<v Speaker 4>you're spinning up that headless browser. Right. There's headless means

353
00:18:15.960 --> 00:18:19.839
<v Speaker 4>that there's no visual parts, there's no graphical interface, so

354
00:18:19.920 --> 00:18:22.319
<v Speaker 4>on CI you don't need to see something. The CI

355
00:18:22.480 --> 00:18:26.279
<v Speaker 4>basically spins up the browser without the actual graphical interface,

356
00:18:26.480 --> 00:18:29.559
<v Speaker 4>but it's still spinning up a browser instance for your tests.

357
00:18:30.319 --> 00:18:33.559
<v Speaker 4>And tests are running isolation, right, so that means you

358
00:18:33.559 --> 00:18:36.839
<v Speaker 4>know there's a new browser instance being spun up every

359
00:18:36.880 --> 00:18:39.240
<v Speaker 4>time there's a new test, because otherwise, you know your

360
00:18:39.240 --> 00:18:41.799
<v Speaker 4>cookies would jump from the same if it was the

361
00:18:41.839 --> 00:18:43.839
<v Speaker 4>same browser, right, and then you can messs of your

362
00:18:43.839 --> 00:18:47.559
<v Speaker 4>test you have flaky tests, you'd go crazy. So when

363
00:18:47.559 --> 00:18:49.400
<v Speaker 4>you have like a lot of tests, you're spinning up

364
00:18:49.400 --> 00:18:52.319
<v Speaker 4>all these browser things. You can do a couple of things, right.

365
00:18:52.359 --> 00:18:57.400
<v Speaker 4>You can go charting shot across multiple machines, which can

366
00:18:57.440 --> 00:18:59.160
<v Speaker 4>be good and can be bad depending on how you

367
00:18:59.200 --> 00:19:02.720
<v Speaker 4>set it up. Because if you shard too much, remember

368
00:19:02.839 --> 00:19:05.759
<v Speaker 4>you've still got to download the browsers for that shard, right,

369
00:19:05.880 --> 00:19:08.759
<v Speaker 4>So if you have eight shards, there's eight times you're

370
00:19:08.759 --> 00:19:11.880
<v Speaker 4>going to do that. Are you saving time or are you?

371
00:19:11.920 --> 00:19:14.200
<v Speaker 4>So sometimes you have to decide how many shards do

372
00:19:14.240 --> 00:19:17.640
<v Speaker 4>I need and you've got to play around with those numbers. Now,

373
00:19:17.640 --> 00:19:21.400
<v Speaker 4>another cool thing, cool thing that we have is the

374
00:19:21.440 --> 00:19:24.240
<v Speaker 4>Microsoft Playright service, which is not the open source part

375
00:19:24.359 --> 00:19:28.759
<v Speaker 4>of Playwright but the Azure part. So if you're in Azure,

376
00:19:28.880 --> 00:19:32.720
<v Speaker 4>you can basically use cloud based browsers. So now the

377
00:19:32.759 --> 00:19:37.240
<v Speaker 4>browsers that you normally are like downloading are in the cloud.

378
00:19:37.559 --> 00:19:39.039
<v Speaker 4>And I know it's like we all talk about the

379
00:19:39.039 --> 00:19:41.039
<v Speaker 4>cloud and we have to imagine this physical cloud and

380
00:19:41.039 --> 00:19:43.599
<v Speaker 4>the browsers are up there, and you're basically sending your

381
00:19:43.640 --> 00:19:45.920
<v Speaker 4>tests up to this cloud so it doesn't need to

382
00:19:45.960 --> 00:19:49.359
<v Speaker 4>download anything. What that means is you're just running your

383
00:19:49.359 --> 00:19:52.599
<v Speaker 4>tests and you're not doing the browser instance part, which

384
00:19:52.640 --> 00:19:55.279
<v Speaker 4>saves a hell of a lot of time. Now, obviously

385
00:19:55.319 --> 00:19:58.440
<v Speaker 4>this is an Azure feature, so it's it's costs money,

386
00:19:58.440 --> 00:20:00.839
<v Speaker 4>of course, but you save my in the long run.

387
00:20:00.920 --> 00:20:04.200
<v Speaker 4>If you're talking about scaling at an enterprise level, you're

388
00:20:04.240 --> 00:20:08.079
<v Speaker 4>talking about large scale. You want to run I don't know,

389
00:20:08.160 --> 00:20:11.319
<v Speaker 4>ten thousand tests and your pipeline is being slowed down

390
00:20:11.599 --> 00:20:13.400
<v Speaker 4>forty five minutes is taken. You want to take it

391
00:20:13.440 --> 00:20:16.799
<v Speaker 4>down to three minutes. You know, any company would pay for.

392
00:20:16.759 --> 00:20:19.400
<v Speaker 2>That, right, you know, if I'm running tests in the cloud,

393
00:20:19.480 --> 00:20:21.599
<v Speaker 2>I'm paying for that. So the fact that you've made

394
00:20:21.599 --> 00:20:26.279
<v Speaker 2>me a dedicated service for this purpose, that sounds good

395
00:20:26.279 --> 00:20:28.640
<v Speaker 2>to me. That's just going to make fewer mistakes.

396
00:20:28.920 --> 00:20:31.799
<v Speaker 1>Is that ratio like forty five minutes turns to three

397
00:20:31.880 --> 00:20:32.759
<v Speaker 1>minutes typical.

398
00:20:33.359 --> 00:20:35.079
<v Speaker 4>No, that's just me making up a number from the

399
00:20:35.119 --> 00:20:38.279
<v Speaker 4>top of my head, because obviously everyone's tests are different

400
00:20:38.680 --> 00:20:42.279
<v Speaker 4>and you'd have to test it out. But the amount

401
00:20:42.440 --> 00:20:45.640
<v Speaker 4>of time saving across all the examples that we've kind

402
00:20:45.680 --> 00:20:47.640
<v Speaker 4>of run it on and then the clients that are

403
00:20:47.720 --> 00:20:50.279
<v Speaker 4>using it in the feedback they've been given us is

404
00:20:50.279 --> 00:20:52.920
<v Speaker 4>the amount of time. No one is the same, right,

405
00:20:52.960 --> 00:20:57.240
<v Speaker 4>but everyone has saved immense amount of time. And then

406
00:20:57.319 --> 00:20:59.799
<v Speaker 4>also what's really important to a lot of people as

407
00:20:59.799 --> 00:21:02.680
<v Speaker 4>well is being able to see, like, you know, to

408
00:21:02.759 --> 00:21:04.440
<v Speaker 4>see those those tests in a kind of like a

409
00:21:04.519 --> 00:21:07.160
<v Speaker 4>dashboard style, to be able to go back and forward

410
00:21:08.119 --> 00:21:10.039
<v Speaker 4>and then like have a report, right and see a

411
00:21:10.079 --> 00:21:13.319
<v Speaker 4>report of like this is what happened, this is where

412
00:21:13.319 --> 00:21:16.799
<v Speaker 4>it failed, and have a trace of that test on

413
00:21:16.839 --> 00:21:19.279
<v Speaker 4>your you know CEE I, on your on the on

414
00:21:19.359 --> 00:21:21.279
<v Speaker 4>in the cloud, so that basically you don't have to

415
00:21:21.759 --> 00:21:25.920
<v Speaker 4>you know, go to local and locally spin up that

416
00:21:25.920 --> 00:21:28.279
<v Speaker 4>that trace file and then debug it. You can basically

417
00:21:28.480 --> 00:21:29.640
<v Speaker 4>almost debugget in the cloud.

418
00:21:29.720 --> 00:21:29.839
<v Speaker 1>Right.

419
00:21:31.039 --> 00:21:34.400
<v Speaker 4>But yeah, so scaleability was an issue, and we solve

420
00:21:34.440 --> 00:21:36.799
<v Speaker 4>that issue because we also need to solve that issue

421
00:21:36.799 --> 00:21:38.599
<v Speaker 4>because otherwise we're losing time.

422
00:21:38.759 --> 00:21:39.559
<v Speaker 1>That's great news.

423
00:21:39.680 --> 00:21:42.160
<v Speaker 2>So testing as a service is that where we're going.

424
00:21:42.440 --> 00:21:44.880
<v Speaker 4>I think we just need to fix testing in general.

425
00:21:44.920 --> 00:21:48.559
<v Speaker 4>And I'll be very truthful, we do not have it

426
00:21:48.640 --> 00:21:51.240
<v Speaker 4>all figured out in Microsoft. We're still learning because we

427
00:21:51.279 --> 00:21:54.079
<v Speaker 4>are so many people, so many teams. We're like so

428
00:21:54.160 --> 00:21:56.839
<v Speaker 4>many mini companies if you if you kind of think

429
00:21:56.839 --> 00:22:00.400
<v Speaker 4>about it that way, and everyone is trying to like,

430
00:22:00.559 --> 00:22:03.880
<v Speaker 4>you know, deliver products. Right, We've got a lot of products, right,

431
00:22:04.799 --> 00:22:06.440
<v Speaker 4>how do we test all these and how do we

432
00:22:06.480 --> 00:22:09.920
<v Speaker 4>create a better solution across Microsoft? And then how do

433
00:22:09.960 --> 00:22:12.920
<v Speaker 4>we let you all use that solution because if we

434
00:22:13.079 --> 00:22:15.559
<v Speaker 4>just test it into in ourselves, we don't get the

435
00:22:15.680 --> 00:22:17.920
<v Speaker 4>value from like, oh but what about this feature and

436
00:22:17.960 --> 00:22:20.680
<v Speaker 4>we need this so, you know, making sure that Playwright

437
00:22:20.759 --> 00:22:24.480
<v Speaker 4>is open source and then having those other services for

438
00:22:24.559 --> 00:22:29.000
<v Speaker 4>the enterprise scale really helps us to make a better product.

439
00:22:29.079 --> 00:22:33.200
<v Speaker 4>But yeah, we're not saying that we have everything sold

440
00:22:33.319 --> 00:22:36.599
<v Speaker 4>in Microsoft and we know everything. No, we're building things

441
00:22:36.599 --> 00:22:39.599
<v Speaker 4>as we go along, and we require like the Playwright

442
00:22:39.640 --> 00:22:43.400
<v Speaker 4>service is going to the reporting is in basically GA

443
00:22:43.759 --> 00:22:46.960
<v Speaker 4>this week, Right, It's like literally, it's new, so we

444
00:22:46.960 --> 00:22:48.799
<v Speaker 4>don't have it all figured out because someone might come

445
00:22:48.799 --> 00:22:51.079
<v Speaker 4>along and say, oh, we want this feature, Well cool,

446
00:22:51.519 --> 00:22:53.720
<v Speaker 4>tell us let us know. We'll build that feature for you,

447
00:22:53.839 --> 00:22:56.440
<v Speaker 4>because we might also think that feature is necessary for

448
00:22:56.480 --> 00:23:02.400
<v Speaker 4>other people. But yeah, everything is being built around making

449
00:23:02.440 --> 00:23:06.640
<v Speaker 4>lives easier, making testing easier. I think easier is our

450
00:23:06.640 --> 00:23:09.240
<v Speaker 4>big word here. Easier and getting more people to test.

451
00:23:09.480 --> 00:23:11.960
<v Speaker 2>Yeah. Absolutely, And I could see it's still in preview too,

452
00:23:12.000 --> 00:23:13.720
<v Speaker 2>So it's just a hint that you know, you're all

453
00:23:13.839 --> 00:23:16.720
<v Speaker 2>learning by how people use it and what it's for.

454
00:23:17.720 --> 00:23:20.079
<v Speaker 2>But I appreciate the idea that you know, this is

455
00:23:20.119 --> 00:23:23.200
<v Speaker 2>the same angle as why would I build a bunch

456
00:23:23.240 --> 00:23:25.599
<v Speaker 2>of virtual machines if I can use an app service?

457
00:23:25.759 --> 00:23:29.440
<v Speaker 2>Why would I, you know, deploy my own caching if

458
00:23:29.480 --> 00:23:32.799
<v Speaker 2>I could use a reddish cash service like you go

459
00:23:32.839 --> 00:23:37.319
<v Speaker 2>as far up the stack as he can. That's cool,

460
00:23:37.400 --> 00:23:40.240
<v Speaker 2>that's I'm excited to see that, just because yeah, I

461
00:23:40.279 --> 00:23:42.359
<v Speaker 2>don't want to build these things. I'd like you to

462
00:23:42.359 --> 00:23:44.720
<v Speaker 2>do it for me please and charge me by the

463
00:23:44.799 --> 00:23:46.440
<v Speaker 2>test exactly.

464
00:23:46.480 --> 00:23:48.039
<v Speaker 4>And I think if you have that many tests and

465
00:23:48.079 --> 00:23:50.200
<v Speaker 4>you're you're paying for that means you know you've got

466
00:23:50.240 --> 00:23:53.039
<v Speaker 4>some good coverage going on there that it's worth paying for, right,

467
00:23:53.920 --> 00:23:54.720
<v Speaker 4>it was just made.

468
00:23:54.519 --> 00:23:56.240
<v Speaker 2>Too many pages, you know, Yeah?

469
00:23:56.400 --> 00:23:58.519
<v Speaker 4>Maybe maybe.

470
00:24:00.079 --> 00:24:02.599
<v Speaker 2>Well, I mean it's been two years as you were

471
00:24:02.680 --> 00:24:04.799
<v Speaker 2>on more or less, so it's lead to see Playwright

472
00:24:04.799 --> 00:24:06.599
<v Speaker 2>continuing do evolve Like that's cool.

473
00:24:07.000 --> 00:24:11.839
<v Speaker 1>Yeah, so you have a special love for JavaScript frameworks.

474
00:24:12.920 --> 00:24:18.160
<v Speaker 1>How does Yeah, that's writing your bio. I'm not hating, Nana,

475
00:24:18.200 --> 00:24:21.920
<v Speaker 1>I'm just reading here, reading your bio. So how does

476
00:24:22.079 --> 00:24:27.960
<v Speaker 1>a JavaScript play into Playwright? If at all is any JavaScript?

477
00:24:28.359 --> 00:24:31.279
<v Speaker 1>Are there entry points for JavaScript in Playwright? If you

478
00:24:31.319 --> 00:24:35.519
<v Speaker 1>want to do some custom things? How does you know?

479
00:24:35.680 --> 00:24:37.079
<v Speaker 1>That's the question, I guess.

480
00:24:37.759 --> 00:24:40.640
<v Speaker 4>I think what's important to understand about Playwright is that

481
00:24:40.720 --> 00:24:43.400
<v Speaker 4>it can be used across four languages. Right, So if

482
00:24:43.400 --> 00:24:46.720
<v Speaker 4>you were like myself, I'm a JavaScript developer or typescript

483
00:24:46.759 --> 00:24:49.960
<v Speaker 4>developer now is what the cool kids say, then I

484
00:24:50.000 --> 00:24:52.799
<v Speaker 4>can basically use that language because that's what I'm familiar with,

485
00:24:52.920 --> 00:24:55.279
<v Speaker 4>That's what my website is built in. So I'm naturally

486
00:24:55.279 --> 00:24:57.839
<v Speaker 4>going to write my tests using the language that I know.

487
00:24:58.559 --> 00:25:01.759
<v Speaker 4>But Carlin Richard, you're dot net people, right, and you

488
00:25:01.960 --> 00:25:06.440
<v Speaker 4>you're c sharp probably better than JavaScript, and your website

489
00:25:06.480 --> 00:25:08.640
<v Speaker 4>is probably built in Blazer, so you're gonna want to

490
00:25:08.640 --> 00:25:11.200
<v Speaker 4>write your tests in c sharp and not in JavaScript.

491
00:25:11.240 --> 00:25:14.240
<v Speaker 4>And I totally understand that. And that's why Playwright is

492
00:25:14.279 --> 00:25:16.680
<v Speaker 4>so cool because you can just do that, because you

493
00:25:16.720 --> 00:25:19.519
<v Speaker 4>can use Playwright as a dot net developer. And I

494
00:25:19.559 --> 00:25:21.279
<v Speaker 4>know this is dot net rocks, but let's talk about

495
00:25:21.279 --> 00:25:23.240
<v Speaker 4>the Java people and the Pithon people because they can

496
00:25:23.359 --> 00:25:27.440
<v Speaker 4>also write tests using Python and using Java and it's

497
00:25:27.480 --> 00:25:30.119
<v Speaker 4>the same API, and you don't have to learn new tricks,

498
00:25:30.160 --> 00:25:33.160
<v Speaker 4>and you know, you can have one company, which we do.

499
00:25:33.200 --> 00:25:35.920
<v Speaker 4>We're like in Microsoft, we have like you know, various

500
00:25:36.119 --> 00:25:39.839
<v Speaker 4>and we're using different languages depending on the teams and

501
00:25:39.920 --> 00:25:42.599
<v Speaker 4>depending on what we're testing and what people are comfortable with.

502
00:25:42.960 --> 00:25:45.359
<v Speaker 4>So we use dot Net, use Pithon, we use Java,

503
00:25:45.359 --> 00:25:49.160
<v Speaker 4>we use JavaScript. There are differences, of course, right, I'm

504
00:25:49.160 --> 00:25:51.599
<v Speaker 4>not going to lie and say it's the same across

505
00:25:51.599 --> 00:25:53.759
<v Speaker 4>the board. It can't be the same across the board

506
00:25:54.160 --> 00:25:57.960
<v Speaker 4>for various reasons. Because test runners MS test, you can't

507
00:25:57.960 --> 00:26:01.519
<v Speaker 4>compare the MS test to the pie test for example,

508
00:26:01.559 --> 00:26:04.920
<v Speaker 4>they have different stuff, right, And in JavaScript, we built

509
00:26:04.920 --> 00:26:06.440
<v Speaker 4>the test runner and play right, so it's a little

510
00:26:06.480 --> 00:26:08.559
<v Speaker 4>bit different. We've got a little bit more leeway on,

511
00:26:08.960 --> 00:26:10.319
<v Speaker 4>you know, doing certain things.

512
00:26:10.400 --> 00:26:12.160
<v Speaker 1>And I just want to say for the record that

513
00:26:12.440 --> 00:26:19.359
<v Speaker 1>some of our best friends, right, JavaScript, Python and Java. Okay,

514
00:26:19.400 --> 00:26:22.279
<v Speaker 1>so isn't that what they say usually when somebody uses

515
00:26:22.359 --> 00:26:27.359
<v Speaker 1>you of anti say that some of our best friends.

516
00:26:28.920 --> 00:26:31.720
<v Speaker 2>But either way, you are testing a web app, you're

517
00:26:31.759 --> 00:26:33.839
<v Speaker 2>just able to write the code for the test in

518
00:26:33.960 --> 00:26:34.480
<v Speaker 2>c sharp.

519
00:26:34.599 --> 00:26:34.839
<v Speaker 1>Yeah.

520
00:26:34.960 --> 00:26:39.000
<v Speaker 4>Yeah, because playwright just sees like what's out on the website, right,

521
00:26:39.000 --> 00:26:41.599
<v Speaker 4>what's what's being produced? The what the you know you

522
00:26:41.759 --> 00:26:44.240
<v Speaker 4>inspect code, right, and so you can see what the

523
00:26:44.319 --> 00:26:48.319
<v Speaker 4>user can see that accessibility role, right. It just sees

524
00:26:48.359 --> 00:26:49.960
<v Speaker 4>that that is a role of a button, and it's

525
00:26:50.039 --> 00:26:53.640
<v Speaker 4>looking for what a screen reader would read out or

526
00:26:53.680 --> 00:26:55.839
<v Speaker 4>what a user would see. You sees a button and

527
00:26:55.880 --> 00:26:58.000
<v Speaker 4>it clicks that button, and it does not care if

528
00:26:58.000 --> 00:27:01.839
<v Speaker 4>your button is written in blazer React you write heighten whatever.

529
00:27:02.160 --> 00:27:05.720
<v Speaker 2>Yeah, no, and right, you know you don't want to

530
00:27:05.799 --> 00:27:09.759
<v Speaker 2>make writing the test the barrier, exactly like you wanted

531
00:27:09.799 --> 00:27:12.480
<v Speaker 2>to be as easy as possible. So I appreciate that

532
00:27:12.519 --> 00:27:16.000
<v Speaker 2>writing the language you want. I could write tests in Python.

533
00:27:16.079 --> 00:27:18.119
<v Speaker 2>That's one way to slow myself way down.

534
00:27:19.240 --> 00:27:22.279
<v Speaker 4>It could be fun there. You might learn something, maybe.

535
00:27:22.119 --> 00:27:24.480
<v Speaker 2>It's interesting you think about writing in different languages for

536
00:27:24.519 --> 00:27:25.240
<v Speaker 2>different tasks.

537
00:27:25.319 --> 00:27:28.880
<v Speaker 1>Yeah, okay, that's cool. So break time. Want to take

538
00:27:28.880 --> 00:27:29.119
<v Speaker 1>a break.

539
00:27:29.279 --> 00:27:29.960
<v Speaker 2>Let's take a little break.

540
00:27:30.000 --> 00:27:32.400
<v Speaker 1>All right, We'll be right back after these very important messages.

541
00:27:33.440 --> 00:27:36.359
<v Speaker 1>Did you know you can easily migrate asp net web

542
00:27:36.400 --> 00:27:40.480
<v Speaker 1>apps to Windows containers on Aws. Use the app to

543
00:27:40.599 --> 00:27:45.000
<v Speaker 1>Container tool to containerize your iis websites and deploy to

544
00:27:45.039 --> 00:27:50.759
<v Speaker 1>AWS managed container services with or without Kubernetes. Find out

545
00:27:50.799 --> 00:27:55.640
<v Speaker 1>more about app to Container at aws, dot Amazon dot com, Slash,

546
00:27:55.680 --> 00:28:01.480
<v Speaker 1>dot Net, slash modernize, Attention dot netdeville. Looking for the

547
00:28:01.559 --> 00:28:08.000
<v Speaker 1>ultimate SDK to handle electronic document processing? Meet tx text Control.

548
00:28:08.599 --> 00:28:12.920
<v Speaker 1>Txtext controls your go to solution for seamless PDF generation,

549
00:28:13.400 --> 00:28:18.400
<v Speaker 1>secure electronic signatures, and efficient digital forms processing all within

550
00:28:18.440 --> 00:28:22.680
<v Speaker 1>your dot net applications. Empower your products with robust document

551
00:28:22.759 --> 00:28:28.200
<v Speaker 1>management capabilities, boost productivity, and deliver top notch solutions to

552
00:28:28.240 --> 00:28:32.519
<v Speaker 1>your clients. Trusted by developers worldwide, including me and Richard,

553
00:28:32.839 --> 00:28:37.079
<v Speaker 1>txtext control is the SDK that makes a difference. Check

554
00:28:37.119 --> 00:28:41.440
<v Speaker 1>out demos dot textcontrol dot com for live online demos

555
00:28:41.720 --> 00:28:45.599
<v Speaker 1>and see it in action. And we're back dot NetRocks on.

556
00:28:45.720 --> 00:28:48.759
<v Speaker 1>Carl Franklin. That's my buddy Richard Campbell and our friend

557
00:28:48.920 --> 00:28:52.160
<v Speaker 1>w O'Brien. We're talking about testing with playwright and just

558
00:28:52.200 --> 00:28:54.559
<v Speaker 1>a reminder that if you don't like those ads and

559
00:28:54.599 --> 00:28:56.720
<v Speaker 1>you don't want them, you can pay five bucks a

560
00:28:56.759 --> 00:28:59.559
<v Speaker 1>month and be a patron and you can get a

561
00:28:59.599 --> 00:29:03.880
<v Speaker 1>feed with ad free shows. All right, So we were

562
00:29:03.920 --> 00:29:06.880
<v Speaker 1>talking about we're talking about all sorts of stuff and

563
00:29:06.920 --> 00:29:10.720
<v Speaker 1>testing in different languages. But snapshot testing is something that

564
00:29:11.000 --> 00:29:16.480
<v Speaker 1>I learned about from Simon Crop. And so the idea

565
00:29:16.599 --> 00:29:20.480
<v Speaker 1>is that you have you have these following inputs and

566
00:29:20.519 --> 00:29:24.240
<v Speaker 1>you expect the following output and I get is that

567
00:29:24.559 --> 00:29:31.200
<v Speaker 1>primarily how playwright works or is it even simpler than that?

568
00:29:31.880 --> 00:29:35.880
<v Speaker 4>So it's just another part of something playwright can do. Right,

569
00:29:36.000 --> 00:29:39.839
<v Speaker 4>So snapshots is like, you know, you're testing that something

570
00:29:39.880 --> 00:29:43.119
<v Speaker 4>looks the same that for example, this is really good

571
00:29:43.119 --> 00:29:45.279
<v Speaker 4>for Wednesday, like those banners up here at the top

572
00:29:45.279 --> 00:29:47.599
<v Speaker 4>of your you know, the Black Friday banners that appear,

573
00:29:47.920 --> 00:29:51.119
<v Speaker 4>and then what I like is there and you want

574
00:29:51.160 --> 00:29:53.880
<v Speaker 4>it to be there, but you wanted to, I don't know,

575
00:29:53.960 --> 00:29:56.559
<v Speaker 4>make sure it's not there after Black Friday eatin doesn't

576
00:29:56.559 --> 00:29:58.440
<v Speaker 4>make sense. So you could, like you know, write a

577
00:29:58.480 --> 00:30:02.319
<v Speaker 4>test that then I don't know, shows the banner, and

578
00:30:02.359 --> 00:30:04.680
<v Speaker 4>then make sure that it is exactly the same as

579
00:30:04.680 --> 00:30:08.240
<v Speaker 4>a banner right on the website. But yeah, there's a

580
00:30:08.279 --> 00:30:11.759
<v Speaker 4>lot of people using snapshot testing or visual regression testing

581
00:30:12.200 --> 00:30:16.200
<v Speaker 4>as a whole ballgame. It's not easy, right because because

582
00:30:16.200 --> 00:30:18.559
<v Speaker 4>across browser as well, the slight little differences, so you've

583
00:30:18.559 --> 00:30:20.559
<v Speaker 4>got to, like, you know, also make sure your pixel

584
00:30:20.599 --> 00:30:23.839
<v Speaker 4>differences are kind of the same, because Safari will do

585
00:30:23.960 --> 00:30:26.279
<v Speaker 4>something a little bit different to Firefox because that's just

586
00:30:26.319 --> 00:30:31.400
<v Speaker 4>how they do things. But definitely, I think if people

587
00:30:31.440 --> 00:30:33.599
<v Speaker 4>are getting started with testing, I wouldn't say, go and

588
00:30:33.839 --> 00:30:36.640
<v Speaker 4>make sure your website looks exactly the same as the

589
00:30:36.680 --> 00:30:40.359
<v Speaker 4>snapshots like everything, because you'll end up possibly things will

590
00:30:40.359 --> 00:30:43.880
<v Speaker 4>fail if you change that button. You've got to re

591
00:30:43.880 --> 00:30:48.079
<v Speaker 4>recreate those snapshots each time. So I would always say, like,

592
00:30:48.200 --> 00:30:51.039
<v Speaker 4>that's an extra, that's great and it's cool, but first

593
00:30:51.279 --> 00:30:53.559
<v Speaker 4>make sure that your user can do what the user

594
00:30:53.599 --> 00:30:56.400
<v Speaker 4>should be doing. Whatever it is on that website is

595
00:30:56.440 --> 00:30:58.720
<v Speaker 4>going to bring you money or make you click that

596
00:30:59.039 --> 00:31:03.680
<v Speaker 4>patron button that you talked about, whatever it is, test that.

597
00:31:03.960 --> 00:31:07.559
<v Speaker 4>Then do the accessibility testing, the regression testing, the API testing,

598
00:31:08.160 --> 00:31:10.480
<v Speaker 4>there's a whole ballgame of things that you can.

599
00:31:10.359 --> 00:31:14.640
<v Speaker 2>Explore, sure, right, but I mean the snapshot test is

600
00:31:14.680 --> 00:31:17.839
<v Speaker 2>really about a look and feel thing rather than a

601
00:31:17.880 --> 00:31:18.759
<v Speaker 2>functionality thing.

602
00:31:19.119 --> 00:31:23.119
<v Speaker 4>Yeah, it's about that it looks the same basically that

603
00:31:23.160 --> 00:31:26.799
<v Speaker 4>it hasn't changed that the designer didn't put a CSS

604
00:31:26.839 --> 00:31:28.480
<v Speaker 4>hidden on a button and now they can't see the

605
00:31:28.519 --> 00:31:32.000
<v Speaker 4>button for example. Right, But then if that was the case,

606
00:31:32.039 --> 00:31:34.559
<v Speaker 4>player wouldn't be able to click the button, so that

607
00:31:34.640 --> 00:31:35.359
<v Speaker 4>test would fail.

608
00:31:35.480 --> 00:31:37.319
<v Speaker 2>It would still break anyway, exactly.

609
00:31:37.559 --> 00:31:40.039
<v Speaker 4>But sometimes there are times when visual aggression testing is

610
00:31:40.079 --> 00:31:44.799
<v Speaker 4>really important, especially when using I don't know when they say,

611
00:31:44.839 --> 00:31:46.839
<v Speaker 4>like a lot of advertisements on your website and you

612
00:31:46.880 --> 00:31:49.799
<v Speaker 4>want to remove those and just see what the website

613
00:31:49.839 --> 00:31:52.319
<v Speaker 4>looks like out those You can mask those kind of things.

614
00:31:52.559 --> 00:31:55.559
<v Speaker 2>Well, no websites are so twitchy these days, right, Like

615
00:31:56.119 --> 00:31:59.000
<v Speaker 2>thank goodness for pie hole. Otherwise there's stuff flying at

616
00:31:59.039 --> 00:31:59.960
<v Speaker 2>you in all directions.

617
00:32:00.480 --> 00:32:03.279
<v Speaker 1>And you can also exclude things like you say, I

618
00:32:03.319 --> 00:32:06.119
<v Speaker 1>want this page to look like such and such with

619
00:32:06.240 --> 00:32:08.720
<v Speaker 1>the following data that it because we put in a

620
00:32:08.759 --> 00:32:12.480
<v Speaker 1>certain input. But you know, little things like the date

621
00:32:13.079 --> 00:32:14.920
<v Speaker 1>in the time, we don't want to We don't care

622
00:32:14.920 --> 00:32:16.200
<v Speaker 1>about that that can change.

623
00:32:17.039 --> 00:32:19.519
<v Speaker 2>Yeah, I'm kind of staggered at how it would do

624
00:32:19.559 --> 00:32:22.640
<v Speaker 2>those visual representations you just talked about sort of headless

625
00:32:22.680 --> 00:32:25.720
<v Speaker 2>browsing where there is no visual component, but is do

626
00:32:25.799 --> 00:32:27.839
<v Speaker 2>something different when it wants to create a visualization.

627
00:32:28.640 --> 00:32:31.480
<v Speaker 4>Well, it's just like taking a photo and then like

628
00:32:31.880 --> 00:32:35.200
<v Speaker 4>it takes a photo kind I'm just doing like an

629
00:32:35.200 --> 00:32:37.799
<v Speaker 4>example here, right, you take your phone out and you

630
00:32:37.839 --> 00:32:40.920
<v Speaker 4>take a photograph of your screen of the website, and

631
00:32:40.960 --> 00:32:44.200
<v Speaker 4>then you change your code, and then it takes another

632
00:32:44.200 --> 00:32:47.119
<v Speaker 4>photograph and then it compares those two overlays one in

633
00:32:47.160 --> 00:32:49.680
<v Speaker 4>front of the other, and it kind of sees like

634
00:32:50.279 --> 00:32:53.039
<v Speaker 4>is there a pixel difference? Has the button moved over there?

635
00:32:53.079 --> 00:32:55.839
<v Speaker 4>What's it expecting and where is the button now? And

636
00:32:55.880 --> 00:32:58.920
<v Speaker 4>I'm using button as an example, but it could be anything, right.

637
00:32:58.720 --> 00:33:00.559
<v Speaker 2>But it is pixel perfect it.

638
00:33:00.839 --> 00:33:04.200
<v Speaker 4>Yeah, but you can adjust that, right, You can say

639
00:33:04.240 --> 00:33:07.079
<v Speaker 4>I want it to be like so many pixels away

640
00:33:07.160 --> 00:33:10.759
<v Speaker 4>because I don't know it's an animation that's gonna like,

641
00:33:10.880 --> 00:33:12.680
<v Speaker 4>you know, I don't do stuff, and you know you

642
00:33:12.720 --> 00:33:13.960
<v Speaker 4>want it to be able to move a little bit

643
00:33:14.079 --> 00:33:15.119
<v Speaker 4>or whatever.

644
00:33:15.559 --> 00:33:18.880
<v Speaker 1>So I wasn't really thinking of taking screenshots, screenshot testing,

645
00:33:18.920 --> 00:33:21.920
<v Speaker 1>snapshot testing something I learned from Simon because he has

646
00:33:21.920 --> 00:33:24.759
<v Speaker 1>a tool called Verify, and it's really just testing the

647
00:33:25.039 --> 00:33:30.039
<v Speaker 1>HTML output of a page. So like a form, Right,

648
00:33:30.079 --> 00:33:32.400
<v Speaker 1>you fill in a form, you press a button, it's

649
00:33:32.440 --> 00:33:35.599
<v Speaker 1>going to give you a summary of that data. And

650
00:33:36.319 --> 00:33:39.799
<v Speaker 1>that is what it tests that the output of this

651
00:33:40.119 --> 00:33:44.680
<v Speaker 1>matches what we expected to match. So I think I

652
00:33:44.759 --> 00:33:46.440
<v Speaker 1>think we might be talking about two different things.

653
00:33:46.480 --> 00:33:48.200
<v Speaker 4>We're probably talking about different Yeah.

654
00:33:48.079 --> 00:33:49.880
<v Speaker 2>But it is that in that case, it is literally

655
00:33:49.920 --> 00:33:52.799
<v Speaker 2>a text comparison to the HTML. Yeah, Like if I

656
00:33:52.839 --> 00:33:56.039
<v Speaker 2>was doing visual representation comparison, I could write the page

657
00:33:56.079 --> 00:33:58.519
<v Speaker 2>different ways but have to present the same way.

658
00:33:58.839 --> 00:33:59.079
<v Speaker 1>Yep.

659
00:33:59.240 --> 00:34:01.640
<v Speaker 2>Not that I'm good enough to do that, but you

660
00:34:01.680 --> 00:34:04.480
<v Speaker 2>know that would be interesting.

661
00:34:04.640 --> 00:34:06.319
<v Speaker 1>Yeah, you want to make sure that this did with

662
00:34:06.359 --> 00:34:11.079
<v Speaker 1>this ID has this content right, which is different than

663
00:34:11.800 --> 00:34:16.000
<v Speaker 1>you know, comparing uh screenshat, which is also valuable. I

664
00:34:16.000 --> 00:34:20.280
<v Speaker 1>mean absolutely, There's just so many ways to go about testing.

665
00:34:20.639 --> 00:34:23.480
<v Speaker 2>Yeah, I'm just wondering about the brittleness of tests, right,

666
00:34:23.559 --> 00:34:26.239
<v Speaker 2>Like most people dive into testing the first round of

667
00:34:26.280 --> 00:34:28.519
<v Speaker 2>tests they build. The next time they do enough to

668
00:34:28.599 --> 00:34:30.760
<v Speaker 2>do the app, every single test is broken and they right,

669
00:34:30.840 --> 00:34:31.679
<v Speaker 2>why did I do this?

670
00:34:32.599 --> 00:34:32.880
<v Speaker 1>Yep?

671
00:34:33.079 --> 00:34:36.920
<v Speaker 2>And you Debbie jump in on this, like, how do

672
00:34:36.960 --> 00:34:39.119
<v Speaker 2>you write non brittle tests?

673
00:34:41.320 --> 00:34:45.039
<v Speaker 4>I think you just have to constantly test. You've got

674
00:34:45.039 --> 00:34:50.079
<v Speaker 4>to like make sure that I don't know, I think,

675
00:34:51.159 --> 00:34:53.199
<v Speaker 4>I think use the tools that are there. I would say,

676
00:34:53.239 --> 00:34:55.519
<v Speaker 4>use the tools that are the code generator, right, the

677
00:34:55.519 --> 00:34:57.559
<v Speaker 4>code gen will generate the test view. I think a

678
00:34:57.559 --> 00:35:00.920
<v Speaker 4>lot of people going back the previous days would have

679
00:35:00.960 --> 00:35:03.559
<v Speaker 4>wrote their test using things like XPath, using things like

680
00:35:03.639 --> 00:35:07.000
<v Speaker 4>CSS selectors, right, And that was the right thing to

681
00:35:07.000 --> 00:35:10.039
<v Speaker 4>do back then. But our front end, and I don't

682
00:35:10.039 --> 00:35:12.360
<v Speaker 4>know about you guys in the Blazer world, but we

683
00:35:12.519 --> 00:35:16.320
<v Speaker 4>CHANGEAVASCRIPT are known for We're changing things all the time, right,

684
00:35:16.400 --> 00:35:21.079
<v Speaker 4>We're constantly like changing, so our htmil is changing. And

685
00:35:21.199 --> 00:35:22.880
<v Speaker 4>if you're going to change that, the x path is

686
00:35:22.880 --> 00:35:24.639
<v Speaker 4>going to change, which means your test is now going

687
00:35:24.679 --> 00:35:27.760
<v Speaker 4>to be brittle. It's going to break just changing your

688
00:35:27.760 --> 00:35:31.199
<v Speaker 4>CSS class. New developer comes along and he changes a

689
00:35:31.199 --> 00:35:34.000
<v Speaker 4>CS class. If your website and your tests break, well,

690
00:35:34.440 --> 00:35:37.199
<v Speaker 4>that's not good, right, So you need to avoid things

691
00:35:37.320 --> 00:35:40.079
<v Speaker 4>like that. And the way to do that is, you know,

692
00:35:40.199 --> 00:35:44.039
<v Speaker 4>use the test generator tools to generate those locators. Locators

693
00:35:44.079 --> 00:35:46.320
<v Speaker 4>is how you locate an element on the page. So

694
00:35:46.360 --> 00:35:48.480
<v Speaker 4>how do I all locate that button on the page.

695
00:35:48.840 --> 00:35:51.280
<v Speaker 4>You use a get by roll button, and that button

696
00:35:51.920 --> 00:35:55.519
<v Speaker 4>has a name called submit, and that is tested. It's

697
00:35:55.559 --> 00:35:59.559
<v Speaker 4>also tested for accessibility, and it's easier than for you

698
00:35:59.639 --> 00:36:01.480
<v Speaker 4>to go out and just do whatever you want with

699
00:36:01.519 --> 00:36:03.360
<v Speaker 4>that button, change the CSS of it, put it in

700
00:36:03.440 --> 00:36:05.880
<v Speaker 4>a different place. Play right's going to look for that

701
00:36:06.280 --> 00:36:09.480
<v Speaker 4>button with a roll of button call submit, and it

702
00:36:09.480 --> 00:36:11.159
<v Speaker 4>doesn't care where it does in your page because that's

703
00:36:11.159 --> 00:36:13.480
<v Speaker 4>not important. What's important is that the user can click it,

704
00:36:14.039 --> 00:36:16.039
<v Speaker 4>and the user can get to that next section of

705
00:36:16.039 --> 00:36:17.679
<v Speaker 4>the page or whatever it needs to do with it.

706
00:36:17.960 --> 00:36:20.400
<v Speaker 4>So I think making sure you test as close to

707
00:36:20.440 --> 00:36:24.719
<v Speaker 4>the user as possible will save a lot of problems

708
00:36:24.840 --> 00:36:26.840
<v Speaker 4>in the long run when it comes to brittle tests.

709
00:36:27.360 --> 00:36:30.639
<v Speaker 1>M So instead of on Fridays you guys all get

710
00:36:30.679 --> 00:36:33.679
<v Speaker 1>together and push buttons, now you're getting together and updating

711
00:36:33.679 --> 00:36:36.119
<v Speaker 1>your tests or maybe you're doing that every time you

712
00:36:36.199 --> 00:36:39.000
<v Speaker 1>check in something, right, yeah, and make sure your tests

713
00:36:39.000 --> 00:36:40.000
<v Speaker 1>are working.

714
00:36:40.119 --> 00:36:42.920
<v Speaker 4>And what's really cool is is like the code Generator

715
00:36:42.960 --> 00:36:45.519
<v Speaker 4>tool is very cool because you literally like it launches

716
00:36:45.639 --> 00:36:47.519
<v Speaker 4>up a browser window, right, and you put in your

717
00:36:47.559 --> 00:36:50.360
<v Speaker 4>website address and you start using a use as a

718
00:36:50.440 --> 00:36:53.119
<v Speaker 4>user would, and you generate that code, and then you've

719
00:36:53.119 --> 00:36:56.119
<v Speaker 4>got tools like get up copilot, right, and you can

720
00:36:56.159 --> 00:36:58.639
<v Speaker 4>do really funky things at copilot because you can turn

721
00:36:58.679 --> 00:37:01.400
<v Speaker 4>around and then say a test step for my tests,

722
00:37:01.440 --> 00:37:03.119
<v Speaker 4>and it's going to like literally take the code that

723
00:37:03.159 --> 00:37:05.159
<v Speaker 4>you've just written, that you've just generated, actually you haven't

724
00:37:05.159 --> 00:37:06.960
<v Speaker 4>written it, you've just generated, and it's going to put

725
00:37:06.960 --> 00:37:08.280
<v Speaker 4>it into test steps for you, and it's going to

726
00:37:08.320 --> 00:37:10.199
<v Speaker 4>do all these kind of other stuff that you want

727
00:37:10.239 --> 00:37:14.559
<v Speaker 4>to do it or put it into a described block

728
00:37:14.760 --> 00:37:17.320
<v Speaker 4>or you know, you can help get a copilot can

729
00:37:17.360 --> 00:37:20.719
<v Speaker 4>also help you to improve the code. So as a developer,

730
00:37:20.719 --> 00:37:23.719
<v Speaker 4>you're not sitting there just like writing the boring parts

731
00:37:23.719 --> 00:37:26.119
<v Speaker 4>of testing. You're using the tools to your advantage.

732
00:37:26.400 --> 00:37:26.800
<v Speaker 2>Mm hmm.

733
00:37:27.199 --> 00:37:27.440
<v Speaker 1>Good.

734
00:37:27.719 --> 00:37:31.360
<v Speaker 2>Yeah, And I think definitely I remember in Strange Loop.

735
00:37:32.000 --> 00:37:34.760
<v Speaker 2>I think the third go around of writing tests for

736
00:37:34.920 --> 00:37:38.079
<v Speaker 2>Strange Loo, we've gotten better at writing tests that just

737
00:37:38.119 --> 00:37:40.880
<v Speaker 2>we're going to be more tolerant, like you're still checking

738
00:37:40.880 --> 00:37:43.199
<v Speaker 2>the value the way you want to, but you're not

739
00:37:43.320 --> 00:37:48.000
<v Speaker 2>fussing over you know, unnecessary elements of that. That means

740
00:37:48.000 --> 00:37:50.800
<v Speaker 2>that the slightest change in the test fails. Yeah. I

741
00:37:51.280 --> 00:37:54.599
<v Speaker 2>think it's really an art to write good tests and

742
00:37:54.639 --> 00:37:57.239
<v Speaker 2>stuff that will give you check the stuff you need

743
00:37:57.239 --> 00:38:02.599
<v Speaker 2>to check without being infrastructure where minor changes the things

744
00:38:02.719 --> 00:38:04.000
<v Speaker 2>just derail all the tests.

745
00:38:04.159 --> 00:38:06.199
<v Speaker 4>I think that's the difference between unit testing, right, whereas

746
00:38:06.239 --> 00:38:09.920
<v Speaker 4>unit testing really is so close to the code that

747
00:38:09.960 --> 00:38:12.079
<v Speaker 4>it's like you change something in the code or your

748
00:38:12.119 --> 00:38:15.599
<v Speaker 4>test is going to break. With play right, really, you

749
00:38:15.880 --> 00:38:17.880
<v Speaker 4>can change something in the code and your test shouldn't

750
00:38:17.880 --> 00:38:21.199
<v Speaker 4>break unless you change, say, like what the user sees

751
00:38:21.239 --> 00:38:24.480
<v Speaker 4>and instead of a submit button, you put upload, and

752
00:38:25.039 --> 00:38:27.199
<v Speaker 4>now it's going to like look for submit and it

753
00:38:27.239 --> 00:38:31.800
<v Speaker 4>finds upload because that they messed up the translation or whatever, or.

754
00:38:31.760 --> 00:38:34.920
<v Speaker 2>You've removed I or you've removed a field or like you.

755
00:38:35.039 --> 00:38:37.920
<v Speaker 2>I mean, there's also good test fails where it's like

756
00:38:38.000 --> 00:38:39.800
<v Speaker 2>I made this change and the test shows that I

757
00:38:39.920 --> 00:38:42.400
<v Speaker 2>made this change. Now I can remove the test or

758
00:38:42.519 --> 00:38:46.360
<v Speaker 2>change the test. Yes, I don't mind it when it

759
00:38:46.400 --> 00:38:49.440
<v Speaker 2>is clear on stuff. What I mind is, hey, you know,

760
00:38:49.480 --> 00:38:51.760
<v Speaker 2>we wrote three hundred tests around this set of pages,

761
00:38:51.800 --> 00:38:56.079
<v Speaker 2>and I changed this CSS structure and every test is

762
00:38:56.159 --> 00:38:56.880
<v Speaker 2>vailing now.

763
00:38:57.280 --> 00:38:59.320
<v Speaker 4>And that's the difference between unit tests, right, because you

764
00:38:59.440 --> 00:39:01.800
<v Speaker 4>write that test and then you can't really see what's

765
00:39:01.840 --> 00:39:05.000
<v Speaker 4>going on, right, you're stuck in code land. But in Playwright,

766
00:39:05.039 --> 00:39:07.360
<v Speaker 4>when you have that failing test, you spin up a

767
00:39:07.480 --> 00:39:10.880
<v Speaker 4>trace of your test, and that's like basically be able

768
00:39:10.880 --> 00:39:15.440
<v Speaker 4>to go think of a video, but better so a

769
00:39:15.599 --> 00:39:19.119
<v Speaker 4>video with dev tools, a video that you can manually

770
00:39:19.199 --> 00:39:22.000
<v Speaker 4>step between every single step and go back and forward

771
00:39:22.039 --> 00:39:24.679
<v Speaker 4>in time at your own pace, and have a DMB

772
00:39:24.719 --> 00:39:27.400
<v Speaker 4>snapshot that you can just pop out and inspect the

773
00:39:27.400 --> 00:39:30.519
<v Speaker 4>dev tools and say, right, I know what happened here.

774
00:39:31.280 --> 00:39:34.159
<v Speaker 4>Somebody puts CSS hidden. I'm just gonna use that example

775
00:39:34.199 --> 00:39:37.639
<v Speaker 4>because that actually happened to me on one of them

776
00:39:37.639 --> 00:39:40.199
<v Speaker 4>that I was testing on the podcast website, and it

777
00:39:40.280 --> 00:39:42.920
<v Speaker 4>put CSS hitting them playright couldn't find it because it

778
00:39:43.000 --> 00:39:45.559
<v Speaker 4>isn't visible to the user. So if the user can

779
00:39:45.679 --> 00:39:48.960
<v Speaker 4>click it, but the code is there, the code didn't change.

780
00:39:49.000 --> 00:39:51.000
<v Speaker 4>The CSS change and the CSOs could have been in

781
00:39:51.000 --> 00:39:53.360
<v Speaker 4>a different file to the code, right well.

782
00:39:53.360 --> 00:39:54.840
<v Speaker 2>And so that could have gone the other way. Right,

783
00:39:54.880 --> 00:39:57.280
<v Speaker 2>you've hid it the test pass and you deploy it,

784
00:39:57.320 --> 00:40:01.000
<v Speaker 2>but the users can't work that. Yeah, you want to

785
00:40:01.000 --> 00:40:03.239
<v Speaker 2>be able to catch that too. It's it's it's always

786
00:40:03.239 --> 00:40:03.960
<v Speaker 2>going to be a battle.

787
00:40:04.199 --> 00:40:07.920
<v Speaker 1>Can can Playwright penetrate to the level where it can

788
00:40:07.960 --> 00:40:11.719
<v Speaker 1>see components of the shadow? Don Yeah, it just works.

789
00:40:12.320 --> 00:40:14.079
<v Speaker 4>It just works, iphrames, it just works.

790
00:40:14.239 --> 00:40:18.679
<v Speaker 1>Just wow. Not well that was a simple answer.

791
00:40:19.639 --> 00:40:21.400
<v Speaker 4>Sorry, I try to make it more complicated.

792
00:40:22.000 --> 00:40:27.079
<v Speaker 1>Yes, no, yes, no question, I can't tell. That's great. Yeah,

793
00:40:27.079 --> 00:40:29.039
<v Speaker 1>that's great because that that has been a problem.

794
00:40:28.760 --> 00:40:30.880
<v Speaker 4>In the past, you know it has. That's why we

795
00:40:30.920 --> 00:40:33.599
<v Speaker 4>had to solve it. Because you know, problems need to

796
00:40:33.599 --> 00:40:34.119
<v Speaker 4>be solved.

797
00:40:34.480 --> 00:40:34.880
<v Speaker 1>Yeah.

798
00:40:35.039 --> 00:40:37.559
<v Speaker 2>Do you find that developers are using playwright in their

799
00:40:37.639 --> 00:40:40.000
<v Speaker 2>local cycle or is this purely part of the c

800
00:40:40.119 --> 00:40:42.159
<v Speaker 2>i CD pipeline.

801
00:40:42.519 --> 00:40:45.760
<v Speaker 4>I think it has to be both, because you need to.

802
00:40:46.559 --> 00:40:49.840
<v Speaker 4>I always think that unless a website is finished, which

803
00:40:49.920 --> 00:40:54.360
<v Speaker 4>I've very rarely seen, what is product finished exactly exactly,

804
00:40:55.119 --> 00:40:57.519
<v Speaker 4>So unless it's something that you are never going to

805
00:40:57.519 --> 00:40:59.159
<v Speaker 4>touch ever again in your life and you're going to

806
00:40:59.199 --> 00:41:02.360
<v Speaker 4>write those tests and it's just on CICD for whatever reason.

807
00:41:02.400 --> 00:41:04.719
<v Speaker 4>But no, nothing has ever finished. Things are always changing.

808
00:41:05.880 --> 00:41:09.119
<v Speaker 4>So running your tests locally as you're building some code,

809
00:41:09.119 --> 00:41:12.400
<v Speaker 4>as you're adding additions, as you're changing things always makes sense.

810
00:41:12.440 --> 00:41:14.599
<v Speaker 4>Some people don't. Some people push it to CEICD so

811
00:41:14.599 --> 00:41:16.840
<v Speaker 4>they can just get their code up there and they're

812
00:41:16.840 --> 00:41:20.760
<v Speaker 4>not testing it locally, and then like you know, Friday,

813
00:41:20.760 --> 00:41:22.360
<v Speaker 4>they make all the changes, they push and then they

814
00:41:22.360 --> 00:41:26.639
<v Speaker 4>can't go home because, like you know, something broke. So

815
00:41:26.760 --> 00:41:30.039
<v Speaker 4>running it locally always always helps, and having the tools

816
00:41:30.559 --> 00:41:32.880
<v Speaker 4>like it's it's when when tests are quick and easy

817
00:41:32.920 --> 00:41:37.039
<v Speaker 4>to run, it means people don't mind running them locally.

818
00:41:37.079 --> 00:41:39.760
<v Speaker 4>When tests, if your test takes forty five minutes to run,

819
00:41:39.920 --> 00:41:41.960
<v Speaker 4>as a developer, I'm not going to run it. I'm

820
00:41:41.960 --> 00:41:43.840
<v Speaker 4>not going to run it locally. I might run the

821
00:41:43.880 --> 00:41:47.480
<v Speaker 4>one test that I'm working on, but it might affect

822
00:41:47.480 --> 00:41:49.400
<v Speaker 4>other things the code I'm working on.

823
00:41:49.480 --> 00:41:52.119
<v Speaker 2>So and that's sort of that integration test that after

824
00:41:52.159 --> 00:41:55.639
<v Speaker 2>the fact. Yeah, now you go check the integration effects.

825
00:41:55.800 --> 00:41:57.639
<v Speaker 4>So I always say, like new code you're building, I'm

826
00:41:57.639 --> 00:42:02.159
<v Speaker 4>building this new feature, then I really want to work

827
00:42:02.199 --> 00:42:05.320
<v Speaker 4>on those tests. I'm writing those tests. As I'm building

828
00:42:05.320 --> 00:42:07.719
<v Speaker 4>the feature. I write the tests, and then I'm testing

829
00:42:07.760 --> 00:42:10.239
<v Speaker 4>that and then I you know, it's now deployed and

830
00:42:10.280 --> 00:42:12.960
<v Speaker 4>then it's running on CICD and it keeps running. Yeah,

831
00:42:13.400 --> 00:42:14.639
<v Speaker 4>So it's a mixture of things.

832
00:42:14.760 --> 00:42:19.320
<v Speaker 2>I mean, a CICD part is not not optional. Before

833
00:42:19.360 --> 00:42:23.800
<v Speaker 2>this heads towards deployment or load testing or the next stage.

834
00:42:24.320 --> 00:42:27.400
<v Speaker 2>It must be thoroughly tested. It's just a question of

835
00:42:27.440 --> 00:42:28.920
<v Speaker 2>how much of that can you pull down to the

836
00:42:28.920 --> 00:42:32.639
<v Speaker 2>local workstation for that DEV cycle, the impacts that would

837
00:42:32.719 --> 00:42:35.440
<v Speaker 2>have on them. I guess it would be great to

838
00:42:35.639 --> 00:42:37.119
<v Speaker 2>organize it in such a way that you could only

839
00:42:37.159 --> 00:42:38.639
<v Speaker 2>need to test the piece you're working it.

840
00:42:38.920 --> 00:42:44.159
<v Speaker 1>Are there any common misassumptions or barriers to entry or

841
00:42:44.239 --> 00:42:50.440
<v Speaker 1>gotcha's that people will find misassumptions, Maybe that people will

842
00:42:50.519 --> 00:42:53.320
<v Speaker 1>run into things that they assume that it does that

843
00:42:53.360 --> 00:42:57.960
<v Speaker 1>it doesn't do, or what's the typical getting started barrier

844
00:42:58.039 --> 00:42:59.559
<v Speaker 1>that you see people having.

845
00:42:59.639 --> 00:43:04.559
<v Speaker 2>I think that miss assumption is a word. Look, sorry,

846
00:43:04.599 --> 00:43:05.880
<v Speaker 2>you looked up? I did?

847
00:43:06.559 --> 00:43:06.960
<v Speaker 1>I can't.

848
00:43:07.000 --> 00:43:11.360
<v Speaker 2>I just like, what have you met me? You've appreciate

849
00:43:11.440 --> 00:43:14.719
<v Speaker 2>met me? Debbie, I'm sorry, We're okay.

850
00:43:14.800 --> 00:43:18.760
<v Speaker 4>So I think what's really important to note is that

851
00:43:18.920 --> 00:43:23.440
<v Speaker 4>tools change and evolve over time, and things get better

852
00:43:24.039 --> 00:43:28.760
<v Speaker 4>and we improve things a lot. So sometimes people will

853
00:43:28.800 --> 00:43:31.599
<v Speaker 4>say I'm going to go write a test and they

854
00:43:31.639 --> 00:43:34.880
<v Speaker 4>are too. I'm gonna use the word lazy, but it's just,

855
00:43:35.000 --> 00:43:37.280
<v Speaker 4>you know, that's my word, but there could be another

856
00:43:37.280 --> 00:43:40.079
<v Speaker 4>way of describing it. They're too lazy to read the documentation.

857
00:43:40.719 --> 00:43:44.400
<v Speaker 4>So what they do is they just go and they say,

858
00:43:44.519 --> 00:43:46.400
<v Speaker 4>I'm going to write a test. I don't want to

859
00:43:46.440 --> 00:43:50.119
<v Speaker 4>read docs. So what do I do? And what do

860
00:43:50.159 --> 00:43:52.119
<v Speaker 4>we all do? We just Google right and you just

861
00:43:52.239 --> 00:43:54.199
<v Speaker 4>throw it into Google or now we got the new Google.

862
00:43:54.199 --> 00:43:57.159
<v Speaker 4>We got chat gtpt right, and we say, how do

863
00:43:57.199 --> 00:44:00.519
<v Speaker 4>I write a test in Playwright? And some times the

864
00:44:00.599 --> 00:44:03.920
<v Speaker 4>results we get are wrong and we don't care because

865
00:44:03.960 --> 00:44:05.760
<v Speaker 4>we don't know because we didn't read the docs. We

866
00:44:05.880 --> 00:44:08.559
<v Speaker 4>copy and we paste that code and we put it

867
00:44:08.599 --> 00:44:11.159
<v Speaker 4>into our tests and then we go, my test is breaking,

868
00:44:11.199 --> 00:44:13.320
<v Speaker 4>and I don't know why my test doesn't work, and

869
00:44:13.360 --> 00:44:13.760
<v Speaker 4>I don't know.

870
00:44:13.760 --> 00:44:16.360
<v Speaker 1>What it works when it shouldn't work exactly.

871
00:44:16.880 --> 00:44:19.079
<v Speaker 4>So this is really important to kind of make sure

872
00:44:19.119 --> 00:44:23.320
<v Speaker 4>you're using the latest version that you know, I mean,

873
00:44:23.599 --> 00:44:25.840
<v Speaker 4>Playwright is you know, the first time Playwright came out

874
00:44:25.880 --> 00:44:29.079
<v Speaker 4>three years ago, the locators were different to what they

875
00:44:29.119 --> 00:44:33.519
<v Speaker 4>are now. And you know, sometimes chat GTPT isn't up

876
00:44:33.519 --> 00:44:35.360
<v Speaker 4>to date, it hasn't been trained in the latest model,

877
00:44:35.400 --> 00:44:36.840
<v Speaker 4>so it's going to give you an old version.

878
00:44:36.920 --> 00:44:37.119
<v Speaker 3>Right.

879
00:44:38.119 --> 00:44:40.480
<v Speaker 4>Someone on stack overflow maybe wrote that a couple of

880
00:44:40.519 --> 00:44:42.679
<v Speaker 4>years ago. Maybe doesn't know much about testing. You have

881
00:44:42.760 --> 00:44:45.239
<v Speaker 4>no idea of their knowledge level. You're just copying their

882
00:44:45.280 --> 00:44:48.199
<v Speaker 4>code and their answer, assuming that they're all experts and

883
00:44:48.239 --> 00:44:50.599
<v Speaker 4>that you're not an expert. But really, if you just

884
00:44:50.639 --> 00:44:52.960
<v Speaker 4>go into the documentation and did the same search and

885
00:44:53.000 --> 00:44:55.480
<v Speaker 4>the documentation, you would get that answer. We get a

886
00:44:55.519 --> 00:44:56.199
<v Speaker 4>better answer.

887
00:44:57.719 --> 00:45:00.599
<v Speaker 1>Are there are there really good examples in the documentation

888
00:45:00.960 --> 00:45:03.960
<v Speaker 1>of you know, for people getting started their walkthroughs or

889
00:45:04.119 --> 00:45:04.800
<v Speaker 1>that kind of thing.

890
00:45:05.199 --> 00:45:08.119
<v Speaker 4>So I'm going to be very very honest and tell

891
00:45:08.199 --> 00:45:14.360
<v Speaker 4>you that I did never basically ever install sea sharp

892
00:45:14.519 --> 00:45:22.480
<v Speaker 4>on my computer until literally a couple of months ago.

893
00:45:22.840 --> 00:45:27.159
<v Speaker 4>Of all guils, I built the getting started docs for

894
00:45:27.320 --> 00:45:30.840
<v Speaker 4>c sharp, and I took it from start to finish,

895
00:45:30.880 --> 00:45:33.840
<v Speaker 4>and I mean from start to installing on my computer.

896
00:45:34.199 --> 00:45:34.480
<v Speaker 1>Wow.

897
00:45:34.519 --> 00:45:38.880
<v Speaker 4>So if I, as a non developer, can write a

898
00:45:38.880 --> 00:45:41.880
<v Speaker 4>playwright test in dot net by following the getting started guide,

899
00:45:41.920 --> 00:45:43.840
<v Speaker 4>then a dot net developer should be able to do

900
00:45:43.880 --> 00:45:46.199
<v Speaker 4>it ten times faster than me and should be very

901
00:45:46.239 --> 00:45:48.320
<v Speaker 4>successful in a very short space of time.

902
00:45:48.480 --> 00:45:50.039
<v Speaker 1>Well done you nice.

903
00:45:50.719 --> 00:45:52.400
<v Speaker 2>Thanks, Yeah, that's.

904
00:45:52.280 --> 00:45:53.599
<v Speaker 4>Actually really easy to install.

905
00:45:53.679 --> 00:45:53.960
<v Speaker 3>Do it?

906
00:45:54.039 --> 00:45:56.840
<v Speaker 4>I realized it's actually a purple button. You just press

907
00:45:56.920 --> 00:45:59.559
<v Speaker 4>it and then it just installs. I did not know that.

908
00:45:59.679 --> 00:46:02.280
<v Speaker 2>Yeah, I mean we always had this problem. But there's

909
00:46:02.280 --> 00:46:05.039
<v Speaker 2>too many ways and so did some of them are

910
00:46:05.119 --> 00:46:06.599
<v Speaker 2>hard and yeah, if you picked it.

911
00:46:07.000 --> 00:46:09.239
<v Speaker 4>You know what I did, I asked chat and you

912
00:46:09.280 --> 00:46:11.199
<v Speaker 4>know what it did. It sent me down the rum path.

913
00:46:11.480 --> 00:46:14.840
<v Speaker 1>Oh man, you go to the docks.

914
00:46:17.320 --> 00:46:19.599
<v Speaker 2>Who's lazy? Yeah?

915
00:46:19.760 --> 00:46:24.880
<v Speaker 1>Right, it's like have an intelligent mentor that sometimes loses

916
00:46:24.920 --> 00:46:25.480
<v Speaker 1>its mind.

917
00:46:25.960 --> 00:46:28.559
<v Speaker 2>Well, it gave you an answer, it just wasn't the

918
00:46:28.679 --> 00:46:33.119
<v Speaker 2>easiest answer, right, Like, that's that's a tough concept for

919
00:46:33.159 --> 00:46:34.760
<v Speaker 2>a piece of software to figure out.

920
00:46:34.960 --> 00:46:37.800
<v Speaker 1>Gott to change your system? Prompted to can you not

921
00:46:37.920 --> 00:46:42.719
<v Speaker 1>give me any dumb answers? That'd be great. If you

922
00:46:42.760 --> 00:46:45.159
<v Speaker 1>don't do that, you're only going to get dumb answers.

923
00:46:45.559 --> 00:46:47.519
<v Speaker 4>I mean the answer sounded good to me if it

924
00:46:47.559 --> 00:46:50.480
<v Speaker 4>felt familiar in my world. It was like, you know, yeah, homebrew,

925
00:46:50.559 --> 00:46:52.599
<v Speaker 4>just homebrew it all up. Yeah, that's that's me, Mark

926
00:46:52.679 --> 00:46:55.199
<v Speaker 4>that that does it. But no, you don't need that

927
00:46:55.679 --> 00:46:56.000
<v Speaker 4>was it was?

928
00:46:56.039 --> 00:46:58.199
<v Speaker 2>It was it Hunter that told you. It's like we

929
00:46:58.280 --> 00:46:58.920
<v Speaker 2>made a button.

930
00:47:00.199 --> 00:47:00.960
<v Speaker 1>There's a button.

931
00:47:01.320 --> 00:47:07.760
<v Speaker 4>Yeah, why don't you know about the button?

932
00:47:11.440 --> 00:47:13.840
<v Speaker 1>One thing that I've noticed as an aside here that

933
00:47:13.920 --> 00:47:16.320
<v Speaker 1>Chat GPT is terrible at is CSS?

934
00:47:16.880 --> 00:47:17.360
<v Speaker 2>Oh boy?

935
00:47:18.239 --> 00:47:21.280
<v Speaker 1>Yeah, don't try to solve a CSS problem with chat GP.

936
00:47:22.880 --> 00:47:25.800
<v Speaker 2>Problem. Now I have two problems.

937
00:47:25.880 --> 00:47:27.559
<v Speaker 1>I have a problem factory.

938
00:47:28.239 --> 00:47:32.119
<v Speaker 2>Yeah, I tried it with Kubernetes and a head of

939
00:47:32.159 --> 00:47:37.159
<v Speaker 2>container problems. Yeah, CSS is terrible. I'm sorry. Or did

940
00:47:37.199 --> 00:47:40.559
<v Speaker 2>I have a problem orchestrator. It's one of those, you.

941
00:47:40.519 --> 00:47:43.519
<v Speaker 1>Know, I might as well ask the JavaScript JavaScript web

942
00:47:43.599 --> 00:47:48.360
<v Speaker 1>queen here. CSS visualization tools exist so that you can

943
00:47:48.400 --> 00:47:52.960
<v Speaker 1>see a tree view of your application so you can

944
00:47:53.320 --> 00:47:56.599
<v Speaker 1>more easily diagnose CSS problems.

945
00:47:56.920 --> 00:47:58.800
<v Speaker 4>I mean, we just live in death tools, and like

946
00:47:58.800 --> 00:48:01.920
<v Speaker 4>the death tools is in me, and even like you know.

947
00:48:02.119 --> 00:48:04.559
<v Speaker 1>You really think so, yeah, you think the dev tools

948
00:48:04.559 --> 00:48:06.800
<v Speaker 1>are amazing for CSS. I mean, I guess you do

949
00:48:06.880 --> 00:48:08.519
<v Speaker 1>see the tree, see.

950
00:48:08.280 --> 00:48:12.320
<v Speaker 4>Everything you see like accessibility for your components. You can

951
00:48:12.320 --> 00:48:14.639
<v Speaker 4>see the color. You can even like modify it and

952
00:48:14.639 --> 00:48:16.719
<v Speaker 4>say like that's that a color is not accessible. But

953
00:48:16.760 --> 00:48:18.360
<v Speaker 4>if I can just like scroll it across a bit,

954
00:48:18.400 --> 00:48:20.320
<v Speaker 4>this is an accessible color, which means you can go

955
00:48:20.440 --> 00:48:23.519
<v Speaker 4>back to your designer and say, hey, that gray it's

956
00:48:23.559 --> 00:48:25.239
<v Speaker 4>just not going to work for me, but if you want,

957
00:48:25.440 --> 00:48:27.280
<v Speaker 4>can we make it this grey? Because that would work

958
00:48:27.320 --> 00:48:29.440
<v Speaker 4>accessibility wise, and then they just kind of get you know,

959
00:48:29.480 --> 00:48:32.039
<v Speaker 4>they love their colors and their stuff, so they go, oh,

960
00:48:32.199 --> 00:48:33.360
<v Speaker 4>that gray is a little bit different.

961
00:48:33.920 --> 00:48:37.199
<v Speaker 1>Yeah, I guess what I'm really looking for, And maybe

962
00:48:37.199 --> 00:48:39.719
<v Speaker 1>the dev tools haven't have just missed this. But you know,

963
00:48:39.800 --> 00:48:42.360
<v Speaker 1>when you're several layers down, like maybe ten or eleven

964
00:48:42.440 --> 00:48:45.039
<v Speaker 1>or twelve layers down, and you have some CSS that's

965
00:48:45.159 --> 00:48:48.400
<v Speaker 1>all messed up and it's not what you expected, can

966
00:48:48.440 --> 00:48:52.119
<v Speaker 1>you like querry that and say, yeah, where did this

967
00:48:52.280 --> 00:48:56.480
<v Speaker 1>particular attribute come from in the CSS tree?

968
00:48:56.519 --> 00:48:58.079
<v Speaker 2>Why is this hidden?

969
00:48:58.440 --> 00:49:01.119
<v Speaker 1>Yeah? Why is it hidden? Why is it purple? Why

970
00:49:01.199 --> 00:49:02.119
<v Speaker 1>is it not purple?

971
00:49:03.880 --> 00:49:07.000
<v Speaker 4>I think a lot of people write very very bad CSS,

972
00:49:07.039 --> 00:49:09.400
<v Speaker 4>and that is a weird problem that you need to solve,

973
00:49:09.440 --> 00:49:11.679
<v Speaker 4>and deaf tools can't solve that, and there's no tool

974
00:49:11.719 --> 00:49:14.039
<v Speaker 4>I can solve that. I tried to solve that in

975
00:49:14.079 --> 00:49:16.599
<v Speaker 4>a company and I literally re architected the whole thing

976
00:49:16.639 --> 00:49:19.480
<v Speaker 4>in the amount of times, like CSS, this is being

977
00:49:19.559 --> 00:49:21.880
<v Speaker 4>used across twenty components and you change it once and

978
00:49:21.920 --> 00:49:23.960
<v Speaker 4>it's going to affect so many others, but but you

979
00:49:24.000 --> 00:49:26.079
<v Speaker 4>don't know about it because this file live somewhere else,

980
00:49:26.360 --> 00:49:29.480
<v Speaker 4>and it's just being cold and bundled together. I mean,

981
00:49:29.519 --> 00:49:31.679
<v Speaker 4>tailwind kind of solves that a little bit. If you

982
00:49:31.719 --> 00:49:33.599
<v Speaker 4>wanted to get out on that road, That's what I

983
00:49:33.639 --> 00:49:35.679
<v Speaker 4>would have used and used.

984
00:49:36.599 --> 00:49:39.760
<v Speaker 1>Maybe there's a good AI solution out there waiting on

985
00:49:39.840 --> 00:49:42.280
<v Speaker 1>the horizons that you can just ask, why is the

986
00:49:42.280 --> 00:49:45.519
<v Speaker 1>button not purple? There you go or whatever, and it'll

987
00:49:45.519 --> 00:49:46.679
<v Speaker 1>find it in the tree and.

988
00:49:46.679 --> 00:49:49.679
<v Speaker 4>Bob shrunkle AI is going to solve all our problems.

989
00:49:49.719 --> 00:49:53.880
<v Speaker 1>All the problems, all the problems I know. Yeah, co

990
00:49:54.079 --> 00:49:58.159
<v Speaker 1>pilot for CSS. Here it comes you laugh, I bet

991
00:49:58.239 --> 00:50:02.280
<v Speaker 1>it's coming. Well.

992
00:50:02.320 --> 00:50:06.119
<v Speaker 2>That brings up a great question, Daddy, what's next for Playwright? Like,

993
00:50:06.239 --> 00:50:07.880
<v Speaker 2>is how long's your to do list?

994
00:50:08.519 --> 00:50:10.760
<v Speaker 4>I think the too list is never ending and nobody

995
00:50:11.079 --> 00:50:15.320
<v Speaker 4>can ever know because like when we last spoke, I

996
00:50:15.400 --> 00:50:17.960
<v Speaker 4>never knew that, you know, cloud based browsers were going

997
00:50:18.039 --> 00:50:20.599
<v Speaker 4>to be a thing. That was never because we didn't

998
00:50:20.840 --> 00:50:22.880
<v Speaker 4>we didn't have that scaling problem. We didn't have that

999
00:50:22.920 --> 00:50:25.280
<v Speaker 4>many people using Playwright, so we didn't have all this

1000
00:50:25.360 --> 00:50:28.480
<v Speaker 4>feedback from all these people and companies and community. I mean,

1001
00:50:28.519 --> 00:50:32.000
<v Speaker 4>we went from zero members in discord to over thirty

1002
00:50:32.199 --> 00:50:36.639
<v Speaker 4>thousand members since since we spoke, basically right, so all

1003
00:50:36.679 --> 00:50:39.760
<v Speaker 4>of those companies are now using playwrights. You need different solutions,

1004
00:50:40.239 --> 00:50:44.719
<v Speaker 4>so we basically use GitHub. Playwright is open source and

1005
00:50:44.920 --> 00:50:47.480
<v Speaker 4>people file issues and say we have this problem, we

1006
00:50:47.519 --> 00:50:51.360
<v Speaker 4>want this tool, we want this and everything that we

1007
00:50:51.440 --> 00:50:55.000
<v Speaker 4>built is based on up votes from our users and

1008
00:50:55.599 --> 00:50:57.639
<v Speaker 4>you just go to that file an issue and up voted.

1009
00:50:58.079 --> 00:51:03.920
<v Speaker 2>How organized these issues are technically collecting feedback like I

1010
00:51:03.960 --> 00:51:06.679
<v Speaker 2>could see you guys are taking care of this part

1011
00:51:06.679 --> 00:51:10.280
<v Speaker 2>of the inner loop, like because people are asking for features,

1012
00:51:10.320 --> 00:51:12.880
<v Speaker 2>they things they think are bugs but may or may

1013
00:51:12.920 --> 00:51:16.599
<v Speaker 2>not be like mm hmm exactly. So really are developing

1014
00:51:16.599 --> 00:51:19.920
<v Speaker 2>out in the in public. Basically anybody can contribute. Anybody

1015
00:51:20.039 --> 00:51:24.400
<v Speaker 2>can read lots of comments too, like you're clearly prosecuting

1016
00:51:24.440 --> 00:51:26.639
<v Speaker 2>these like what do you think of this? What about that? Way?

1017
00:51:27.079 --> 00:51:28.360
<v Speaker 2>You know, how would we solve it this way?

1018
00:51:28.440 --> 00:51:31.239
<v Speaker 4>Because we have to understand, right, sometimes people say I

1019
00:51:31.280 --> 00:51:33.280
<v Speaker 4>need this feature, like we'll explain to us because I'm

1020
00:51:33.280 --> 00:51:35.840
<v Speaker 4>not seeing what you're seeing, so we need to understand, like,

1021
00:51:36.239 --> 00:51:37.920
<v Speaker 4>you know, what is it that we why do you

1022
00:51:37.960 --> 00:51:39.119
<v Speaker 4>want this? Why is it important?

1023
00:51:39.199 --> 00:51:42.599
<v Speaker 1>Or the question that I'll microsoft people ask, why would

1024
00:51:42.679 --> 00:51:48.039
<v Speaker 1>you ever want to do that? It's it's not a

1025
00:51:48.159 --> 00:51:51.559
<v Speaker 1>threatening question. It's a real question, like why, what's your why?

1026
00:51:52.159 --> 00:51:55.239
<v Speaker 4>Yeah, because then we can say, well, oh that sounds great,

1027
00:51:56.079 --> 00:51:59.159
<v Speaker 4>let's you know, put some time towards that and work

1028
00:51:59.159 --> 00:52:02.079
<v Speaker 4>on that one instead of this feature, right, or fix

1029
00:52:02.119 --> 00:52:03.760
<v Speaker 4>this boog instead of that bog or whatever.

1030
00:52:04.039 --> 00:52:08.079
<v Speaker 2>Yeah, yeah, totally. And I said just and you know,

1031
00:52:08.280 --> 00:52:11.039
<v Speaker 2>you could write the code too, like if you're if

1032
00:52:11.039 --> 00:52:13.159
<v Speaker 2>you're that interested like that, you can contribute.

1033
00:52:13.239 --> 00:52:15.840
<v Speaker 4>We have had we've had some external contributors, especially in

1034
00:52:15.880 --> 00:52:19.079
<v Speaker 4>the last releases, and I think now get up has

1035
00:52:19.079 --> 00:52:20.440
<v Speaker 4>done some really nice thing where you can kind of

1036
00:52:20.440 --> 00:52:22.360
<v Speaker 4>see their names and their picture and it's really cool.

1037
00:52:22.400 --> 00:52:27.320
<v Speaker 4>So that even like is nice, So yeah, do yeah.

1038
00:52:27.599 --> 00:52:30.239
<v Speaker 2>To contribute to a project like this, that would be

1039
00:52:30.280 --> 00:52:31.360
<v Speaker 2>really fun because.

1040
00:52:31.159 --> 00:52:33.039
<v Speaker 4>We are a very small team, so we can't do

1041
00:52:33.079 --> 00:52:36.079
<v Speaker 4>everything that people want us to do because it's just

1042
00:52:36.119 --> 00:52:38.599
<v Speaker 4>not possible, so we can only like say.

1043
00:52:38.679 --> 00:52:42.199
<v Speaker 2>It's a triayeah, yes, I get that. That makes a

1044
00:52:42.239 --> 00:52:43.159
<v Speaker 2>lot of sense.

1045
00:52:43.320 --> 00:52:46.239
<v Speaker 1>Very cool, awesome sense, like a fun project to contribute to.

1046
00:52:46.760 --> 00:52:48.559
<v Speaker 1>If you're looking first, you've.

1047
00:52:48.440 --> 00:52:51.000
<v Speaker 2>Had a lot of contributors. Holy man, look at this list.

1048
00:52:51.559 --> 00:52:55.719
<v Speaker 4>Yeah, hundreds. We have a great community. I told you.

1049
00:52:57.000 --> 00:52:59.079
<v Speaker 4>And Discord Yeah, oh, there you are.

1050
00:52:59.320 --> 00:53:00.159
<v Speaker 2>I see your commit.

1051
00:53:04.440 --> 00:53:07.239
<v Speaker 1>Well, Debbie, it's been an absolute delight having you on

1052
00:53:07.280 --> 00:53:11.159
<v Speaker 1>the show again, and congratulations on playwright success. And we

1053
00:53:11.199 --> 00:53:13.239
<v Speaker 1>hope our listeners will check it out.

1054
00:53:13.480 --> 00:53:17.360
<v Speaker 4>I mean they have to, it's not we hope. You

1055
00:53:17.440 --> 00:53:19.159
<v Speaker 4>got to be strict to Carl, you gotta tell them.

1056
00:53:19.239 --> 00:53:21.800
<v Speaker 1>All right, guys, my next episode.

1057
00:53:21.440 --> 00:53:23.800
<v Speaker 4>You have all should have written at least one test,

1058
00:53:24.239 --> 00:53:24.800
<v Speaker 4>and I want.

1059
00:53:24.639 --> 00:53:26.920
<v Speaker 1>To see some comments on hiver right.

1060
00:53:27.480 --> 00:53:30.599
<v Speaker 4>I would say I would challenge I would challenge anyone

1061
00:53:30.760 --> 00:53:33.320
<v Speaker 4>who thinks or has never written a playwright test. I

1062
00:53:33.360 --> 00:53:37.719
<v Speaker 4>would say take seven minutes. I won't say seven, not

1063
00:53:37.840 --> 00:53:40.320
<v Speaker 4>ten's a little bit more than five. Seven minutes. Go

1064
00:53:40.400 --> 00:53:42.360
<v Speaker 4>to the getting started guide and the documentation of the

1065
00:53:42.400 --> 00:53:45.519
<v Speaker 4>dot net and basically write that test. And you don't

1066
00:53:45.519 --> 00:53:48.159
<v Speaker 4>even have to have a website. Just put in any

1067
00:53:48.199 --> 00:53:51.360
<v Speaker 4>website and just just go through it and write that test.

1068
00:53:52.079 --> 00:53:55.400
<v Speaker 4>Seven minutes and you'll have a test written to your developer.

1069
00:53:55.440 --> 00:53:56.800
<v Speaker 4>You'll get a pay rise in a second.

1070
00:53:57.280 --> 00:54:01.000
<v Speaker 1>All right, there you go. Let's take make this about money,

1071
00:54:03.760 --> 00:54:04.840
<v Speaker 1>all right, Debbie, thanks a.

1072
00:54:04.760 --> 00:54:06.400
<v Speaker 4>Lot again, Thank you.

1073
00:54:06.440 --> 00:54:09.159
<v Speaker 1>All right, we'll talk to you next time on dot

1074
00:54:09.320 --> 00:54:35.039
<v Speaker 1>net rocks. Dot net rocks is brought to you by

1075
00:54:35.119 --> 00:54:39.800
<v Speaker 1>Franklin's Net and produced by Pop Studios, a full service audio,

1076
00:54:39.920 --> 00:54:44.440
<v Speaker 1>video and post production facilities located physically in New London, Connecticut,

1077
00:54:44.599 --> 00:54:49.440
<v Speaker 1>and of course in the cloud online at pwop dot com.

1078
00:54:49.599 --> 00:54:51.719
<v Speaker 1>Visit our website at d O T N E t

1079
00:54:51.960 --> 00:54:56.000
<v Speaker 1>R O c k S dot com for RSS feeds, downloads,

1080
00:54:56.159 --> 00:54:59.760
<v Speaker 1>mobile apps, comments, and access to the full archives going

1081
00:54:59.800 --> 00:55:03.280
<v Speaker 1>back the show number one recorded in September two thousand

1082
00:55:03.280 --> 00:55:05.920
<v Speaker 1>and two. And make sure you check out our sponsors.

1083
00:55:06.079 --> 00:55:08.920
<v Speaker 1>They keep us in business. Now go write some code.

1084
00:55:09.480 --> 00:55:12.920
<v Speaker 1>See you next time you got jas middle Vans

1085
00:55:18.920 --> 00:55:19.719
<v Speaker 3>Home the
