Playwright at Scale
52:45
21 күн бұрын
Пікірлер
@skillup7
@skillup7 Күн бұрын
This video is very clear and informative. Thanks for the great explanation!
@ChecklyHQ
@ChecklyHQ 21 сағат бұрын
Glad it was helpful!
@jjjjjj6322
@jjjjjj6322 Күн бұрын
problematic design
@ChecklyHQ
@ChecklyHQ Күн бұрын
@@jjjjjj6322 can you explain?
@zzanghayeon
@zzanghayeon Күн бұрын
잘보고있어요 thank you!
@tomasgomez1480
@tomasgomez1480 2 күн бұрын
Very helpfull video! In real big project, it is necessary to add more eslint configuration? thanks
@ChecklyHQ
@ChecklyHQ 2 күн бұрын
More linting and safety is always better. I haven't looked into more rules that a specificely helpful for PWT development though. If you find any, please let me know. :)
@tomasgomez1480
@tomasgomez1480 2 күн бұрын
@@ChecklyHQ thanks for the quick answer. Im gonna investigate
@alleluiaizimpamvu9971
@alleluiaizimpamvu9971 2 күн бұрын
Thanks for the amazing tips
@LenaChe977
@LenaChe977 2 күн бұрын
Great content🙌 Thanks a lot.
@ChecklyHQ
@ChecklyHQ 2 күн бұрын
Happy it's been valuable! 💙
@RafaelSouza99
@RafaelSouza99 2 күн бұрын
This is gonna help me a lot, one time I lost almost a hour to figure out this problem Thank you bro!!!
@ChecklyHQ
@ChecklyHQ 2 күн бұрын
Yay! That's great to hear. 💪
@tymczasowy_nick
@tymczasowy_nick 2 күн бұрын
Thank you! Great content :)
@ChecklyHQ
@ChecklyHQ 2 күн бұрын
Thank you!
@sergeygaidamaka8979
@sergeygaidamaka8979 2 күн бұрын
Thanks for the few more amazing tips!
@Sarath-v8e
@Sarath-v8e 3 күн бұрын
Thanks for the tip
@dwane84
@dwane84 3 күн бұрын
Always very useful tips! Thank you!
@ChecklyHQ
@ChecklyHQ 3 күн бұрын
Glad it was helpful!
@seekerofsense
@seekerofsense 3 күн бұрын
Superb explanation as always, glad you've become a Playwright ambassador
@ChecklyHQ
@ChecklyHQ 3 күн бұрын
Thanks. Yeah, I've been an ambassador for quite a while but missed showing it in the videos. 🫣
@kiranbgowda27
@kiranbgowda27 4 күн бұрын
Hi, i have a doubt what if newPage opens after you did some operation on home page and you need send that instance to next page like cart page. How to send that newPage to another fixture.
@ChecklyHQ
@ChecklyHQ 4 күн бұрын
Yes, you're correct. If your applications opens new pages / windows then this approach can become tricky. You could still import the POM in your code and initialize it manually, though. :)
@kiranbgowda27
@kiranbgowda27 4 күн бұрын
@@ChecklyHQ Thanks for clarifying
@wvo_quine2003
@wvo_quine2003 4 күн бұрын
I would be very interested to see a video specifically on the topic of how to decide whether to use GetByTestid as opposed to the more user-behavior locators like GetByRole
@ChecklyHQ
@ChecklyHQ 4 күн бұрын
That's a great idea. I'll add it to the list. :)
@kaylee42900
@kaylee42900 3 күн бұрын
This is just my experience but I've found that if you ever need to concern yourself with localization or accessibility then testid is a great choice. In my previous jobs we've let qa own the data-testids. That meant that testers were the ones creating and updating them. That ensure that they were understandable, unique, in all the right places, etc. We found that every other field either incurred updates from dev at various points in time (eg. accessibility fields would change to better support accessibility usability) or they would change when localization was applied. By using test ids we didn't incur as many test failures from those kind of changes. Even completely refactors of UI still yielded tons of still passing tests since devs made sure to transfer the test ids along.
@alanacevedoo
@alanacevedoo 10 күн бұрын
Can I add environment variables at group level through the CLI?
@ChecklyHQ
@ChecklyHQ 9 күн бұрын
Heyo. 👋 Yes - this should be possible. `CheckGroup` has an environment vars property 👉 www.checklyhq.com/docs/cli/constructs-reference/#adding-checks-to-a-check-group
@shaikmuneer2241
@shaikmuneer2241 11 күн бұрын
Hi I ran 15 tests in series mode by using 1 worker. All the tests were passed in local environment. But the tests were failed in pipeline and the error shows in pipeline was test timeout of 120000ms exceeded. Can anyone help me?
@ChecklyHQ
@ChecklyHQ 10 күн бұрын
Hello. 👋 This is nothing we can help and YT isn't the best platform either. I recommend joining the Playwright discord and sharing as many details there as possible. "It works locally but fails in CI" isn't very specific. 🫣
@berhell.videos
@berhell.videos 11 күн бұрын
I was looking for something like this (a mask) thank you for showing it :))
@natalisulcer974
@natalisulcer974 11 күн бұрын
Thank you for great video
@berhell.videos
@berhell.videos 11 күн бұрын
Stefan, you're content is always cool!!! Thanks for this one!
@ChecklyHQ
@ChecklyHQ 10 күн бұрын
Thanks for the kind words! 💙
@christiangibbs8534
@christiangibbs8534 12 күн бұрын
Nice clean code, but is it possible to preserve state between tests if you are automatically creating a new instance every time you call it?
@ChecklyHQ
@ChecklyHQ 12 күн бұрын
Can you explain a bit more. Preserving state between tests doesn't sound right. 😅
@feralgoose7157
@feralgoose7157 12 күн бұрын
Thanks, this was implemented so long ago, so now you saved me time in my runs. Interested in other tips, hard to keep up with all these tweaks.
@mninawematrose6993
@mninawematrose6993 12 күн бұрын
Amazing!
@mninawematrose6993
@mninawematrose6993 12 күн бұрын
Powerful! Handy! Nifty! Elegant!
@lukecage9964
@lukecage9964 13 күн бұрын
Imagine to have a big amount of page-objects, it should be really boring to add all of these in the fixture to be exported.. in base.ts is it possible to create the MyFixtures and the export const test dynamically? I mean, like reading all the the pages inside /pom and forEach page add it into MyFixtures and into the test const to export
@ChecklyHQ
@ChecklyHQ 10 күн бұрын
Yeah, reading files should be pretty straightforward, but having the correct types will be tricky if you're writing TS. I'm not sure if one could dynamically create the types without bringing in some "build magic".
@kryptoniansz
@kryptoniansz 15 күн бұрын
is it free sir?
@ChecklyHQ
@ChecklyHQ 15 күн бұрын
Yes, there is a free plan. :)
@dva_kompota
@dva_kompota 15 күн бұрын
You can go even further: wrap all your page objects into UI fixture and use only it in your `test('test-name', async({ui}) => {}` statement. So in your test you'll have statements like `await ui.loginPage.login(EMAIL, PW)` and `await ui.dashboardPage.isReady()` And even further - you can do the same thing for APIs, wrapping all you API objects with CRUD and other methods into API fixture to do things like `await api.user.create(EMAIL, PW)`
@ChecklyHQ
@ChecklyHQ 15 күн бұрын
Yes, that's a great tip!
@ninkambli
@ninkambli 11 күн бұрын
Can you please give github repo of this example?
@dva_kompota
@dva_kompota 15 күн бұрын
Cool new feature and great explanation - thank you! Love Playwright 😇
@serdarfesli2433
@serdarfesli2433 16 күн бұрын
great videos as always.
@ChecklyHQ
@ChecklyHQ 16 күн бұрын
Glad you like them! 😊
@andreaskarz
@andreaskarz 16 күн бұрын
Ganz geil, merci 🙂
@claudsammy
@claudsammy 16 күн бұрын
Great tip as always!! Love your work! How do you write tests if you MUST handle situations where the developers use bad-form lazy loading which allows users to interact when they shouldn't be able to? As you mentioned, this is a common problem. It would be good to get some tips/tricks on that!
@DavidHill1980
@DavidHill1980 16 күн бұрын
better then Microsoft
@Matkotech
@Matkotech 16 күн бұрын
Great content, you should make complete advanced Playwright course! 💪☺️
@tehsu4u
@tehsu4u 11 күн бұрын
Absolutely, he is playwright expert and it would be handy.
@alleluiaizimpamvu9971
@alleluiaizimpamvu9971 16 күн бұрын
I am starting falling in love with your concise content on Playwright
@ChecklyHQ
@ChecklyHQ 16 күн бұрын
Thanks! 💙 Happy it's been valuable!
@Muhammad55597
@Muhammad55597 17 күн бұрын
that's a wonderful explanation, the best channel to deliver Playwright content
@ChecklyHQ
@ChecklyHQ 16 күн бұрын
Thank you! 💙
@eternaldreaamz
@eternaldreaamz 17 күн бұрын
I love your tutorial please create course playwright with TS on udemy 😁
@HossamEldinMohamed3
@HossamEldinMohamed3 17 күн бұрын
Excellent explanation. Thanks so much.👏
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
Happy it's been valuable. 💙
@_firearmy
@_firearmy 17 күн бұрын
Thank you for wonderful explaination video about page.goto. 👏👏 Could you please share your test report tool shown in 07:44 minutes. Pls consider a video about your tool. 😇
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
That is Checkly - our tool. 🫣 You can find more info about it on checklyhq.com. In a nutshell and very brief: Checkly enables you to run and schedule your Playwright scripts to receive timely alerts when something's off with your prod site. :) And we have more videos about it here on the channel. :) 👇 kzbin.info/aero/PLMZDRUOi3a8M95AwN8fWKL8VA5OJ73kJc
@Wakkyguy
@Wakkyguy 17 күн бұрын
Why is failOnJSError initialised as an array when it's supposed to be a boolean?
@ChecklyHQ
@ChecklyHQ 15 күн бұрын
This is how Playwright wants us to define fixture options. You can read more here: playwright.dev/docs/test-fixtures#fixtures-options
@Wakkyguy
@Wakkyguy 15 күн бұрын
@@ChecklyHQ 👍🏻👍🏻
@Wakkyguy
@Wakkyguy 15 күн бұрын
I am working on enterprise app where authentication happens using Okta signin with redirect. Credentials are picked up from the user's system and then they are redirected back to the app with Okta credentials set in local storage. Okta react and okta authjs packages are being used to establish the user auth flow with the Okta server. How can I use playwright in this instance as on load the the user is redirected to another and then redirected back after a bunch in things happens in the background?
@barscanates5573
@barscanates5573 18 күн бұрын
Hello! I really appreciate that. Could you please create a video list focused solely on fighting flakiness in testing? This is a critical area for all testers.
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
This is a great idea and I'll come to this in the upcoming weeks. I'll let you know here.
@Sivashankar_K
@Sivashankar_K 18 күн бұрын
Is there a way to evaluate expression in debug mode ?I want to do a click using evaluate expression . How to do that ?Please explain
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
I don't think this is possible right now. But it might be worth checking the Playwright issue tracker on GitHub. github.com/microsoft/playwright/
@QaAutomationAlchemist
@QaAutomationAlchemist 20 күн бұрын
Can we chain or more than 1
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
Yes. This should be possible. :)
@IshwarappaGoudar
@IshwarappaGoudar 21 күн бұрын
Great Webinar. Very useful !
@ChecklyHQ
@ChecklyHQ 19 күн бұрын
Glad you think so!
@alleluiaizimpamvu9971
@alleluiaizimpamvu9971 21 күн бұрын
Great content buddies, I have started using Playwright and I have integrated in CI, however I have two challenges: 1. It is always a challenge to automate production environment for examples if we have an e-commerce platform ww want to make sure that customers can place the orders seamlessly. How this can be done on production environment since we don't want to record dummy orders on prod. Note: There is no delete component 2. How to mitigate the failed step or test cases which cause Playwright to skip the all remaining test cases?
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
Thanks! Happy the webinar has been valuable. 💙 1) This case is a tricky one when there's no delete component. Maybe you could build in a switch in your application without cluttering your DB? But yeah if you want to test end-to-end you have to test end-to-end, so I'd vote for bringing in a deletion component. ;) 2) I'm not sure I understand this. If you're parallelizing your tests they should all be running independently. But if you go for sequential order I think it makes sense that the rest isn't running. It's hard to give guidance without knowing specifics. :)
@modern_sapien
@modern_sapien 17 күн бұрын
Thanks for reaching out here!
@modern_sapien
@modern_sapien 17 күн бұрын
1. Like for any true e2e tests you should have before or after hooks that run some form of cleanup or sanitization when there is a real database involved. This is especially true for when running in production. Your options are; use mocks, intercept requests, or run clean up after or before tests run.
@modern_sapien
@modern_sapien 17 күн бұрын
2. Do you mean that in a given test it doesn't continue after a failure? Or for a spec with multiple tests that once a failure happens none of the other tests are run?
@alleluiaizimpamvu9971
@alleluiaizimpamvu9971 17 күн бұрын
@@modern_sapien second scenario you mentioned (spec that has several tests cases in test.describe when one failed remain test cases are skipped
@avramukk
@avramukk 24 күн бұрын
how to use different users contexts in one test? like user1.chat.sendMessage('testmes') user2.chat.checkMessage('testmes')
@rupeshraut1920
@rupeshraut1920 25 күн бұрын
Finally, Dev guys can enjoy a good night's sleep with the confidence in the code and knowing their applications are being monitored effectively. Great work Checkly team. Congrats.
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
Thanks for saying this. We're happy that Checkly helps you sleep well. 💙
@Al-oh9yr
@Al-oh9yr 26 күн бұрын
Hi Brother. Do you have the same sample repo project for PlayWright with BDD frame work java. Do you have a mail id to reach out?
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
Hello. Unfortunately, we don't have materials for this stack bc we're focusing on JS/TS.
@Unnameddde2
@Unnameddde2 Ай бұрын
No entendi. Osea yo en mi projecto uso los wait, lo cual no es lo mas productivo pero no le encuentro otra manera. Checkly que sugiere hacer para no usar los wait?
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
I'm not sure I understand the question after translating it. But the video was about avoiding `waitFor` and use auto-waiting and web-first assertions instead. You can read more about them in the Playwright docs. playwright.dev/docs/best-practices#use-web-first-assertions playwright.dev/docs/actionability
@aldonahuelvegasanchez5114
@aldonahuelvegasanchez5114 3 күн бұрын
Al usar el isDisabled, por defecto espera hasta 30 seg para hacer la aserción, por lo que sería redundante agregar una espera a que el elemento cambie la propiedad (como normalmente se hace con Selenium)
@ChecklyHQ
@ChecklyHQ 3 күн бұрын
@@aldonahuelvegasanchez5114 This is incorrect. `locator.isDisabled()` doesn't wait. `expect().toBeDisabled()` waits for a specified timeout.
@mncrff6687
@mncrff6687 Ай бұрын
This video is helpful to understand how narrowing works, so thank you for that! However, as an accessibility engineer there is one problem with the example you have used. It can be difficult for users to identify which "Remove" button is associated with which user or racoon in this case. It would be better to continue to use only the getByRole locator and add unique accessible names to each button, so when I'm navigating with a screen reader I know exactly which user's "remove" action I'm on. One way to do this without changing the visible text and/or visual design would be to add an aria-label to each button. The aria-label should contain the visible text but add more description. Ex. aria-label="Remove Ricky Racoon". With this unique accessible name you can then continue to use getByRole and know your interactive elements are uniquely named for screen reader users. Ex. getByRole('button', { name: 'Remove Ricky Racoon' })
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
Thank you for your detailed explanation and you're absolutely right. 💙 Great call! I didn't think of `aria-label` when looking for a narrowing example. I might record a follow up covering accessible names.
@abcdrk
@abcdrk Ай бұрын
Pretty helpful content, thanks!
@ChecklyHQ
@ChecklyHQ Ай бұрын
Happy it's been valuable. :)
@feralgoose7157
@feralgoose7157 Ай бұрын
Thanks, I have a question if I am using test.step() in my tests to organize my navigation and interaction. So, I would have a step to login and check I am on the dashbaord and another step to navigate from dashboard to page1 and then either a aftereach or another step to logout. Is it recommended to have one fixture that instantiates all pages need in a test, or / can we extend the test.step() for each navigation interactions? Currently, I use functions to hide this functionality but would be interested in fixture replacement.
@ChecklyHQ
@ChecklyHQ 17 күн бұрын
I'm not really sure I understand. But I abstract functionality with fixtures quite often (with and without POMs).
@feralgoose7157
@feralgoose7157 12 күн бұрын
@@ChecklyHQ Maybe another question... In the POM, if I have a button.click() on one page, but we want to ensure that maybe network traffic completes prior to checking if the next page is ready. So the interaction between the 2 pages are tightly coupled and maybe we want a toPass() to be used. I know this is a huge edge case, but we do have instances that the button.click() can timeout, since the network traffic is not responsive based on cold app pools. I don't like the idea of having one page know about another page. Does it make sense to create a workflow object to combine the logic so that each page is single responsibility? Rather than breaking the logic in the POM.
@ChecklyHQ
@ChecklyHQ 12 күн бұрын
@@feralgoose7157 I'm not sure I understand and YT comments aren't the best medium without seeing code examples. 😅 But your case sounds like you might want to look at your application. If your page looks ready but isn't and Playwright is too fast, then you might want to check the included UX flaws.