title
Selenium Training | TestNG Framework For Selenium | Selenium Tutorial For Beginners | Edureka

description
( Selenium Training : https://www.edureka.co/selenium-certification-training ) This Edureka Selenium Training video (Selenium Blog Series: https://goo.gl/ZSgV6L) will take you through the in-depth details of Selenium WebDriver. This Selenium tutorial video is ideal for both beginners and professionals who want to brush up the basics of WebDriver commands and learn how TestNG can be used with Selenium for managing various test cases. Below are the topics covered in this tutorial: 1. Perform Image based testing (Selenium+Sikuli) 2. Manage multiple test cases and annotate test cases (Selenium+TestNG) 3. Generate reports in Selenium (Selenium+TestNG) Do watch the complete video to get a demonstration of how tools like TestNG and Sikuli can be integrated with Selenium WebDriver. Blog on using TestNG along with Selenium WebDriver: https://goo.gl/WvJZjs Go through the slides in Slideshare: https://www.slideshare.net/EdurekaIN/selenium-training-testng-framework-for-selenium-selenium-tutorial-for-beginners-edureka Check our complete Selenium playlist here: https://goo.gl/NmuzXE #Selenium #SeleniumAutomation #SeleniumTesting #SeleniumTutorial #SeleniumTraining Subscribe to our channel to get video updates. Hit the subscribe button above. - - - - - - - - - - - - - - How it Works? 1. This is a 5 Week Instructor led Online Course, 20 hours of assignment and 30 hours of project work 2. We have a 24x7 One-on-One LIVE Technical Support to help you with any problems you might face or any clarifications you may require during the course. 3. At the end of the training you will have to undergo a 2-hour LIVE Practical Exam based on which we will provide you a Grade and a Verifiable Certificate! - - - - - - - - - - - - - - About the Course: Selenium is the most popular tool used to automate the testing of web applications. In this Course, you will learn about Selenium 3.0 and its various components such as Selenium IDE, Selenium WebDriver, and Selenium GRID. You learn to set up your environment so that you are ready to start using Selenium for testing your web applications. Browsers such as Chrome, Firefox, and IE are used to test the web applications. In addition, you will experience to work with Selenium IDE, Selenium WebDriver, Selenium GRID, different frameworks such as Data Driven, Keyword Driven, Hybrid and Cross browser testing. Page Object Model (POM) is a design pattern that enables you to maintain reusability and readability of the automation scripts. This course introduces you to the concept of POM, and how to implement Page Classes and Page Factory to optimize the execution of automated scripts. In addition, you learn about various third party tools such as Jenkins, TestNG, Sikuli, and AutoIT to optimally use them for performing various tasks in our browsers such as working with flash applications or Windows-based UI elements. Finally, you get introduced to Appium, an open source mobile application UI testing framework, and UIautomatorviewer. - - - - - - - - - - - - - - Who should go for this course? Selenium is a new and booming Technology in Software Industry that helps you automate the testing of your applications. Professionals with basic knowledge of Object Oriented Programming can easily take up this course. - - - - - - - - - - - - - - Why learn Selenium? For any project, Companies are rapidly inclining towards open source automated testing tools that will enable them to cut down the cost and effort that manual testing involves. Selenium is one such open source automated testing tool for websites. Performance, execution speed, and browser interaction of Selenium is too fast than any other automation tool. The test packages, the Modes of Selenium available for unattended execution, and the fact that the text script can be developed in any of the language that Selenium supports; makes Selenium the most desired automation testing tool. In addition, Selenium supports different operating systems along with support for different programming languages such as Python, Pearl, Ruby, PHP, .NET, C#, and Java; and various browsers, thereby making Selenium ahead of any other Automation tool. - - - - - - - - - - - - - - For more information, Please write back to us at sales@edureka.co or call us at IND: 9606058406 / US: 18338555775 (toll free). Facebook: https://www.facebook.com/edurekaIN/ Twitter: https://twitter.com/edurekain LinkedIn: https://www.linkedin.com/company/edureka - - - - - - - - - - - - - - Customer Review: Tom Tully says, “I wanted to learn Selenium Webdriver in a live, real course, not self paced, so there would be pressure on me to finish. Edureka accomplished this at a price far lower than an in-person class, and as far as I know they are the only internet class that has live lectures on this subject. Teacher was very knowledgeable. I learned basic use of Selenium. No problem with me being in US and teacher in India. They have US 800 number.”

detail
{'title': 'Selenium Training | TestNG Framework For Selenium | Selenium Tutorial For Beginners | Edureka', 'heatmap': [{'end': 2679.027, 'start': 2592.545, 'weight': 0.787}, {'end': 3933.821, 'start': 3763.485, 'weight': 0.892}, {'end': 4772.705, 'start': 4685.057, 'weight': 1}, {'end': 5030.406, 'start': 4852.242, 'weight': 0.755}, {'end': 6277.166, 'start': 6192.849, 'weight': 0.958}], 'summary': 'This selenium training covers topics including limitations of selenium webdriver, integrating sikuli for image testing, automating ebay website, automating lenovo laptop search, testng advantages, annotations setup, writing and running testng methods, test method execution, grouping, assertions, and parallel testing.', 'chapters': [{'end': 539.264, 'segs': [{'end': 128.669, 'src': 'embed', 'start': 99.739, 'weight': 0, 'content': [{'end': 102.521, 'text': 'Generating HTML reports using TestNG.', 'start': 99.739, 'duration': 2.782}, {'end': 112.205, 'text': 'TestNG. when you run your test scripts using TestNG, you get a beautiful HTML report telling you about which test case you ran, which got passed,', 'start': 103.041, 'duration': 9.164}, {'end': 120.027, 'text': 'which got failed, which test case got skipped, what parameters did you send in your test case and which groups did you include,', 'start': 112.205, 'duration': 7.822}, {'end': 123.548, 'text': 'which groups you did not include, and about the timing.', 'start': 120.027, 'duration': 3.521}, {'end': 126.229, 'text': 'also, how much time each test case took?', 'start': 123.548, 'duration': 2.681}, {'end': 128.669, 'text': 'what was the starting time of every test case?', 'start': 126.229, 'duration': 2.44}], 'summary': 'Testng generates html reports for test scripts, detailing test outcomes, parameters, groups, and timing.', 'duration': 28.93, 'max_score': 99.739, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw99739.jpg'}, {'end': 191.435, 'src': 'embed', 'start': 145.482, 'weight': 2, 'content': [{'end': 150.949, 'text': 'And how do we take over these limitations? By using third-party tools along with Selenium WebDriver.', 'start': 145.482, 'duration': 5.467}, {'end': 153.291, 'text': 'Okay, so these are the shortcomings.', 'start': 151.63, 'duration': 1.661}, {'end': 155.853, 'text': 'Images cannot be tested in web application.', 'start': 153.471, 'duration': 2.382}, {'end': 160.195, 'text': "So let's say I have to test my application using any image recognition.", 'start': 156.313, 'duration': 3.882}, {'end': 164.318, 'text': "Okay, I need to recognize an image and that's how I want to act upon it.", 'start': 160.355, 'duration': 3.963}, {'end': 167.44, 'text': "Now I can't achieve that using Selenium WebDriver.", 'start': 164.798, 'duration': 2.642}, {'end': 170.982, 'text': 'Dependency on external tools for test management.', 'start': 168.08, 'duration': 2.902}, {'end': 175.605, 'text': 'So you need to be dependent on other test tools for test management as well.', 'start': 171.482, 'duration': 4.123}, {'end': 178.567, 'text': 'does not have any reporting facility.', 'start': 176.326, 'duration': 2.241}, {'end': 179.748, 'text': 'Again, the same thing.', 'start': 178.767, 'duration': 0.981}, {'end': 183.39, 'text': 'WebDriver alone cannot generate report for you.', 'start': 180.308, 'duration': 3.082}, {'end': 191.435, 'text': "So that's the reason we either need to automate this process using frameworks or we need to use some other tool like TestNG.", 'start': 183.61, 'duration': 7.825}], 'summary': 'Selenium webdriver has limitations: cannot test images, lacks reporting, depends on external tools.', 'duration': 45.953, 'max_score': 145.482, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw145482.jpg'}, {'end': 283.455, 'src': 'embed', 'start': 255.847, 'weight': 1, 'content': [{'end': 261.289, 'text': 'it could be a link, it could be your text boxes, any element for that matter.', 'start': 255.847, 'duration': 5.442}, {'end': 264.309, 'text': 'you just have to take a snapshot and act upon it.', 'start': 261.289, 'duration': 3.02}, {'end': 273.931, 'text': "So we've got a few classes in Sicily using which we will be identifying these images, converting them into patterns, and then we will act upon them.", 'start': 264.649, 'duration': 9.282}, {'end': 279.893, 'text': 'Sickly uses image recognition techniques to test images visible on screen.', 'start': 274.611, 'duration': 5.282}, {'end': 283.455, 'text': 'It then performs operation on those images.', 'start': 280.634, 'duration': 2.821}], 'summary': 'Sicily uses image recognition to identify and act on screen images.', 'duration': 27.608, 'max_score': 255.847, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw255847.jpg'}, {'end': 382.817, 'src': 'embed', 'start': 356.596, 'weight': 5, 'content': [{'end': 362.143, 'text': "The reason is, see, I'm already working on WebDriver using Eclipse or any other IDE.", 'start': 356.596, 'duration': 5.547}, {'end': 365.766, 'text': "So I don't need Sikli's IDE to write my scripts.", 'start': 362.964, 'duration': 2.802}, {'end': 370.449, 'text': "I just need to bring in Sikli's jar into my project.", 'start': 365.966, 'duration': 4.483}, {'end': 376.793, 'text': "okay?. Once I have that jar, I'm all set to call its classes and use its functions.", 'start': 370.449, 'duration': 6.344}, {'end': 377.113, 'text': 'all right?', 'start': 376.793, 'duration': 0.32}, {'end': 382.817, 'text': "Now, if you see here, I've already created this project at Eureka Sikli project.", 'start': 377.534, 'duration': 5.283}], 'summary': "Using webdriver in eclipse, not needing sikli's ide. bringing in sikli's jar into the project allows calling its classes and using its functions.", 'duration': 26.221, 'max_score': 356.596, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw356596.jpg'}], 'start': 0.248, 'title': 'Selenium webdriver limitations and sikuli integration', 'summary': 'Discusses selenium webdriver limitations such as lack of image testing support and test case management challenges, requiring third-party tools like testng and sikuli for detailed html reports. it also covers integrating sikuli with selenium for image testing in web applications, involving gui scripting and usage of sikuli jar in eclipse.', 'chapters': [{'end': 191.435, 'start': 0.248, 'title': 'Selenium webdriver limitations and third-party tools', 'summary': 'Discusses the limitations of selenium webdriver, including no support for testing images, challenges in managing test cases, and the need for third-party tools like testng and sicli to generate detailed html reports. it also highlights the usage of testng for annotating tests, managing test cases, and generating html reports, along with the dependency on external tools for test management.', 'duration': 191.187, 'highlights': ['Usage of TestNG for annotating tests, managing test cases, and generating HTML reports', 'Challenges in managing test cases and the need for third-party tools like TestNG and Sicli for detailed HTML reports', 'Limitations of Selenium WebDriver, including no support for testing images and dependency on external tools for test management']}, {'end': 539.264, 'start': 192.475, 'title': 'Integrating sikuli with selenium for image testing', 'summary': 'Discusses the integration of sikuli with selenium webdriver for image testing, focusing solely on web applications, providing a gui for scripting where screenshots images are sent as parameters, and the process of obtaining and using the sikuli jar in the eclipse project.', 'duration': 346.789, 'highlights': ['Sikuli uses image recognition techniques to test images visible on screen and then performs operations on those images, enabling web testing and image testing.', 'The Sikuli classes enable the identification and conversion of images into patterns, allowing for actions to be performed on them.', 'The process of obtaining and using the Sikuli jar in the Eclipse project is explained, including the steps for installation and integration.', 'Sikuli provides a GUI for scripting where screenshots images are sent as parameters, and the usage of Sikuli in Eclipse for writing test scripts is advised.', 'The limitations of Selenium are discussed, and the need for integrating Sikuli for image-based testing is highlighted.']}], 'duration': 539.016, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw248.jpg', 'highlights': ['Usage of TestNG for annotating tests, managing test cases, and generating HTML reports', 'Sikuli uses image recognition techniques to test images visible on screen and then performs operations on those images, enabling web testing and image testing.', 'Challenges in managing test cases and the need for third-party tools like TestNG and Sicli for detailed HTML reports', 'The Sikuli classes enable the identification and conversion of images into patterns, allowing for actions to be performed on them.', 'Limitations of Selenium WebDriver, including no support for testing images and dependency on external tools for test management', 'The process of obtaining and using the Sikuli jar in the Eclipse project is explained, including the steps for installation and integration.']}, {'end': 2007.357, 'segs': [{'end': 638.363, 'src': 'embed', 'start': 590.745, 'weight': 0, 'content': [{'end': 596.929, 'text': 'These are the classes widely used when it comes to working with the images on your web application.', 'start': 590.745, 'duration': 6.184}, {'end': 604.554, 'text': "We'll be using pattern class here to create patterns out of those snapshots and then, using the screen class,", 'start': 597.37, 'duration': 7.184}, {'end': 609.76, 'text': "we'll be calling a few functions okay? All right now, what do I want to achieve?", 'start': 604.554, 'duration': 5.206}, {'end': 611.482, 'text': "So let's go to.", 'start': 609.96, 'duration': 1.522}, {'end': 613.465, 'text': "let's say I'm going to eBay.in.", 'start': 611.482, 'duration': 1.983}, {'end': 618.312, 'text': 'All right, now I can open ebay.in using WebDriver.', 'start': 614.73, 'duration': 3.582}, {'end': 622.054, 'text': "I'll have to instantiate my WebDriver and I can call ebay.in.", 'start': 618.472, 'duration': 3.582}, {'end': 630.579, 'text': "Now if you don't want to use WebDriver functions to act upon these elements on this page, you can use image recognition as well.", 'start': 622.394, 'duration': 8.185}, {'end': 635.401, 'text': "However, there's a point that you should keep in mind always and always.", 'start': 631.099, 'duration': 4.302}, {'end': 638.363, 'text': "Let's see, image recognition is tricky.", 'start': 635.982, 'duration': 2.381}], 'summary': 'Using pattern and screen classes for image manipulation, and discussing webdriver and image recognition usage, with emphasis on the tricky aspect of image recognition.', 'duration': 47.618, 'max_score': 590.745, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw590745.jpg'}, {'end': 1010.072, 'src': 'embed', 'start': 980.864, 'weight': 3, 'content': [{'end': 984.889, 'text': "okay?. Now that's again JavaScript executor from WebDriver.", 'start': 980.864, 'duration': 4.025}, {'end': 989.115, 'text': "You're basically using WebDriver along with your sickly.", 'start': 985.43, 'duration': 3.685}, {'end': 993.981, 'text': "Of course, if you have to scroll down, you'll have to take help of your Selenium web driver.", 'start': 989.758, 'duration': 4.223}, {'end': 1001.086, 'text': "So, using JavaScript executive, you're scrolling down the window and then I'm clicking on this image,", 'start': 994.001, 'duration': 7.085}, {'end': 1005.049, 'text': 'because if the image is not visible on the screen, how will you click?', 'start': 1001.086, 'duration': 3.963}, {'end': 1010.072, 'text': "My tool will not be able to find it on the screen, so you'll have to probably click.", 'start': 1005.469, 'duration': 4.603}], 'summary': 'Using javascript executor in webdriver to scroll and click on invisible image.', 'duration': 29.208, 'max_score': 980.864, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw980864.jpg'}, {'end': 1344.525, 'src': 'embed', 'start': 1311.556, 'weight': 1, 'content': [{'end': 1314.657, 'text': "So we've got this, now we need to act upon them.", 'start': 1311.556, 'duration': 3.101}, {'end': 1318.14, 'text': 'How do we act upon them? using the screen class.', 'start': 1314.857, 'duration': 3.283}, {'end': 1321.826, 'text': 'So my object reference is my screen dot.', 'start': 1318.34, 'duration': 3.486}, {'end': 1326.274, 'text': "Now if you see, you've got the whole list to work with.", 'start': 1322.267, 'duration': 4.007}, {'end': 1329.637, 'text': "Right, see? You're getting all the functions.", 'start': 1326.676, 'duration': 2.961}, {'end': 1334.74, 'text': "So if you want to wait for something, some pattern to come up, then you'll use wait.", 'start': 1330.218, 'duration': 4.522}, {'end': 1344.525, 'text': "If you want to find something, you'll use find, right? Remember this class? What am I doing here? If you want to wait for something, wait there.", 'start': 1335.14, 'duration': 9.385}], 'summary': 'Using the screen class to access functions for waiting and finding patterns.', 'duration': 32.969, 'max_score': 1311.556, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw1311556.jpg'}, {'end': 1884.229, 'src': 'embed', 'start': 1846.712, 'weight': 2, 'content': [{'end': 1849.233, 'text': "No, it's going up, so we won't waste time here.", 'start': 1846.712, 'duration': 2.521}, {'end': 1851.834, 'text': "We'll rather click on the search button.", 'start': 1849.694, 'duration': 2.14}, {'end': 1854.395, 'text': "So new, I'll just say new.", 'start': 1851.954, 'duration': 2.441}, {'end': 1857.577, 'text': "I'll just click on search and save.", 'start': 1854.996, 'duration': 2.581}, {'end': 1860.678, 'text': 'Basically, it is little tricky.', 'start': 1858.417, 'duration': 2.261}, {'end': 1865.901, 'text': 'You have to take the snapshots and you should be capable enough to work with those.', 'start': 1861.559, 'duration': 4.342}, {'end': 1871.363, 'text': "So I'll say eBay search, all right? And just save it.", 'start': 1866.441, 'duration': 4.922}, {'end': 1884.229, 'text': "And I'm not gonna use this dropdown, I'll just use this text button, okay? And instead of using these, I will remove them now.", 'start': 1872.604, 'duration': 11.625}], 'summary': 'Demonstrating ebay search setup process, click instead of using dropdown.', 'duration': 37.517, 'max_score': 1846.712, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw1846712.jpg'}], 'start': 539.805, 'title': 'Automating web automation with selenium and image recognition', 'summary': 'Covers the use of selenium webdriver and image recognition for web automation, with a focus on automating the ebay website using snipping tools, selenium webdriver, sickly, and javascript executor for navigation and interaction, as well as utilizing the screen class for automation and automating ebay search using snapshots and code.', 'chapters': [{'end': 735.96, 'start': 539.805, 'title': 'Selenium automation and image recognition', 'summary': 'Discusses using selenium webdriver for web automation and emphasizes the importance of using image recognition along with the challenges and best practices, including the use of snipping tools for taking snapshots.', 'duration': 196.155, 'highlights': ['The chapter emphasizes the importance of using image recognition in Selenium automation, highlighting the challenges of using WebDriver functions and the need to carefully select which elements to interact with, as images on the web page may change over time.', 'It discusses the use of snipping tools for taking snapshots, emphasizing the availability of the Snipping Tool on Windows systems and the option to use free online tools for this purpose.', 'The chapter introduces the concept of using pattern class and screen class in Selenium automation for creating patterns from snapshots and calling functions, providing insight into the classes widely used for working with images on web applications.']}, {'end': 1311.036, 'start': 736.32, 'title': 'Automating ebay website using snipping tool', 'summary': 'Details the process of capturing and saving images using the snipping tool, then utilizing selenium webdriver, sickly, and javascript executor to automate the ebay website for navigating to different sections and interacting with elements, emphasizing exception handling and pattern creation.', 'duration': 574.716, 'highlights': ['Capturing and saving images using the snipping tool and navigating to different sections on the eBay website', 'Utilizing Selenium WebDriver, Sickly, and JavaScript executor for automation', 'Emphasizing exception handling and pattern creation for robust automation']}, {'end': 1635.424, 'start': 1311.556, 'title': 'Using screen class for automation', 'summary': 'Discusses using the screen class for automation, including waiting for patterns to appear, finding elements, and clicking on elements, with examples of wait times and exception handling.', 'duration': 323.868, 'highlights': ['Using Screen class for automation, including waiting for patterns to appear, finding elements, and clicking on elements', 'Examples of wait times and exception handling', 'Explanation of overloaded functions and their usage']}, {'end': 2007.357, 'start': 1635.445, 'title': 'Ebay search automation', 'summary': 'Presents a detailed process of automating ebay search using snapshots and code, including identifying elements, taking snapshots, and writing code to automate the search process.', 'duration': 371.912, 'highlights': ['The process involves carefully taking snapshots of specific areas on the eBay website, such as the search box and category dropdown, to automate the search process.', 'The speaker explains the need for identifying elements on the eBay website, such as the search text box and search button, and writing code to automate the search by sending text to the search box.', "The chapter discusses the process of writing code to automate the eBay search, utilizing functions like 'type' to input text and emphasizing the importance of understanding the available options for automation."]}], 'duration': 1467.552, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw539805.jpg', 'highlights': ['The chapter emphasizes the importance of using image recognition in Selenium automation, highlighting the challenges of using WebDriver functions and the need to carefully select which elements to interact with, as images on the web page may change over time.', 'Using Screen class for automation, including waiting for patterns to appear, finding elements, and clicking on elements', 'The process involves carefully taking snapshots of specific areas on the eBay website, such as the search box and category dropdown, to automate the search process.', 'Utilizing Selenium WebDriver, Sickly, and JavaScript executor for automation', 'The chapter introduces the concept of using pattern class and screen class in Selenium automation for creating patterns from snapshots and calling functions, providing insight into the classes widely used for working with images on web applications.']}, {'end': 2538.139, 'segs': [{'end': 2110.799, 'src': 'embed', 'start': 2084.547, 'weight': 2, 'content': [{'end': 2091.514, 'text': 'If you can see here, this bar is constantly coming up here, that bar, and let me first of all see the exception.', 'start': 2084.547, 'duration': 6.967}, {'end': 2101.132, 'text': "Then I'll proceed, okay? Console, so this says again null pointer and it says this one.", 'start': 2092.416, 'duration': 8.716}, {'end': 2103.073, 'text': "I'm not able to find the search text box.", 'start': 2101.172, 'duration': 1.901}, {'end': 2110.799, 'text': "The reason is same because this time it's not the box that we took snapshot of, right? Remember, this was our snapshot.", 'start': 2103.133, 'duration': 7.666}], 'summary': 'Identified null pointer exception, unable to find search text box.', 'duration': 26.252, 'max_score': 2084.547, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2084547.jpg'}, {'end': 2251.452, 'src': 'embed', 'start': 2223.067, 'weight': 4, 'content': [{'end': 2226.309, 'text': "I'm clicking here, and then I'm coming back here.", 'start': 2223.067, 'duration': 3.242}, {'end': 2231.253, 'text': "I've got an idea, and the idea is that I'll take help of this.", 'start': 2226.97, 'duration': 4.283}, {'end': 2233.755, 'text': "I'm not gonna choose the category, I'll just click on it.", 'start': 2231.433, 'duration': 2.322}, {'end': 2239.103, 'text': "And as soon as I click on it, I get this, okay? So I'm trying to be smart here.", 'start': 2234.44, 'duration': 4.663}, {'end': 2242.366, 'text': "I'm gonna create another pattern, okay?", 'start': 2239.744, 'duration': 2.622}, {'end': 2251.452, 'text': "And I'll say pattern drop down is equal to new pattern, all right?", 'start': 2242.866, 'duration': 8.586}], 'summary': 'Creating a new pattern for dropdown selection.', 'duration': 28.385, 'max_score': 2223.067, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2223067.jpg'}, {'end': 2309.832, 'src': 'embed', 'start': 2284.555, 'weight': 0, 'content': [{'end': 2292.9, 'text': 'I would rather wait for dropdown Control-C and Control-V, and then I will click on it.', 'start': 2284.555, 'duration': 8.345}, {'end': 2298.484, 'text': "my screen dot, click on that dropdown and that's Control-V.", 'start': 2292.9, 'duration': 5.584}, {'end': 2299.985, 'text': "I'll click on it, okay?", 'start': 2298.484, 'duration': 1.501}, {'end': 2303.647, 'text': "Now, once I click on it, I'm getting back that search box.", 'start': 2300.665, 'duration': 2.982}, {'end': 2309.832, 'text': "So then I'll type something here in Lenovo laptops, and then I'll go to search button, Okay, and click on it.", 'start': 2304.147, 'duration': 5.685}], 'summary': 'User waits for dropdown, uses control-c and control-v, types in lenovo laptops, and clicks search button.', 'duration': 25.277, 'max_score': 2284.555, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2284555.jpg'}, {'end': 2417.512, 'src': 'embed', 'start': 2392.031, 'weight': 5, 'content': [{'end': 2398.057, 'text': "Now, when I was hovering mouse, there was another text coming up here, so I'm not sure if that's gonna again work up or not,", 'start': 2392.031, 'duration': 6.026}, {'end': 2399.899, 'text': "but there's no harm in trying out.", 'start': 2398.057, 'duration': 1.842}, {'end': 2409.789, 'text': "So I'll say eBay category, I'll just overwrite the previous one, eBay underscore category and save it, yes.", 'start': 2400.6, 'duration': 9.189}, {'end': 2412.552, 'text': "Now let's try and run this program again, guys.", 'start': 2410.19, 'duration': 2.362}, {'end': 2417.512, 'text': "Otherwise, we'll use some other example, or maybe run the existing one.", 'start': 2413.729, 'duration': 3.783}], 'summary': 'Testing ebay category update in program, running and re-evaluating if necessary.', 'duration': 25.481, 'max_score': 2392.031, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2392031.jpg'}, {'end': 2546.004, 'src': 'embed', 'start': 2520.268, 'weight': 1, 'content': [{'end': 2524.731, 'text': "If you go back to eBay, see even when I'm hovering mouse here, I'm getting this.", 'start': 2520.268, 'duration': 4.463}, {'end': 2534.217, 'text': "Now, maybe when I'm taking the snapshot, it's not the perfect snapshot, because if that click is taking place here at the middle of the snapshot,", 'start': 2525.331, 'duration': 8.886}, {'end': 2538.139, 'text': 'generally anything, any action happens at the middle of the element.', 'start': 2534.217, 'duration': 3.922}, {'end': 2546.004, 'text': 'So if the action is happening at the middle of the element, maybe this area of select a category for search is also coming up.', 'start': 2538.64, 'duration': 7.364}], 'summary': 'Discussion about mouse hovering and element action on ebay website.', 'duration': 25.736, 'max_score': 2520.268, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2520268.jpg'}], 'start': 2008.117, 'title': 'Automating lenovo laptop search', 'summary': 'Details the process of automating a search for lenovo laptops using control commands and a java application. it also discusses troubleshooting a snapshot issue, emphasizing the need for precise snapshots and adapting the approach based on webpage behavior.', 'chapters': [{'end': 2060.772, 'start': 2008.117, 'title': 'Automated search process for lenovo laptops', 'summary': 'Details the process of automating a search for lenovo laptops, involving the use of control commands and a java application to execute the task.', 'duration': 52.655, 'highlights': ['The process involves automating the search for Lenovo laptops using control commands and a Java application.', 'The user waits for the search button to appear before clicking on it, using Control V and Control Save to execute the task.', 'The chapter also highlights the repeated attempt to ensure the process runs smoothly, indicating the iterative nature of the automation process.']}, {'end': 2538.139, 'start': 2062.324, 'title': 'Troubleshooting snapshot issue', 'summary': 'Discusses troubleshooting a snapshot issue while automating a search process, outlining the challenges faced and the iterative approach to resolving them, emphasizing the need for precise snapshots and adapting the approach based on the webpage behavior.', 'duration': 475.815, 'highlights': ['The snapshot issue is identified as a bar constantly appearing in the snapshot, causing a problem with the search functionality, leading to a null pointer exception, affecting the automation process.', 'Emphasizing the need for precise snapshots, the speaker describes the iterative approach of adapting the snapshot technique by considering the webpage behavior, highlighting the importance of avoiding mistakes and being thoughtful in capturing the snapshot.', 'The speaker devises a smart approach involving creating a new pattern, waiting for the dropdown, clicking on it, and then regaining access to the search box, aiming to ensure a successful automation process by efficiently handling the webpage elements and actions.']}], 'duration': 530.022, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2008117.jpg', 'highlights': ['The process involves automating the search for Lenovo laptops using control commands and a Java application.', 'Emphasizing the need for precise snapshots, the speaker describes the iterative approach of adapting the snapshot technique by considering the webpage behavior.', 'The snapshot issue is identified as a bar constantly appearing in the snapshot, causing a problem with the search functionality, leading to a null pointer exception, affecting the automation process.', 'The user waits for the search button to appear before clicking on it, using Control V and Control Save to execute the task.', 'The speaker devises a smart approach involving creating a new pattern, waiting for the dropdown, clicking on it, and then regaining access to the search box, aiming to ensure a successful automation process by efficiently handling the webpage elements and actions.', 'The chapter also highlights the repeated attempt to ensure the process runs smoothly, indicating the iterative nature of the automation process.']}, {'end': 3165.674, 'segs': [{'end': 2648.158, 'src': 'embed', 'start': 2617.692, 'weight': 0, 'content': [{'end': 2620.674, 'text': 'It stands for Test Next Generation.', 'start': 2617.692, 'duration': 2.982}, {'end': 2627.82, 'text': 'TestNG is more flexible and powerful than JUnit because of below functionalities.', 'start': 2621.555, 'duration': 6.265}, {'end': 2629.947, 'text': "We'll just go through these.", 'start': 2628.786, 'duration': 1.161}, {'end': 2642.334, 'text': 'Annotations, prioritization method, dependency, disabling a test case, grouping assertions, parallel testing and report generation.', 'start': 2630.627, 'duration': 11.707}, {'end': 2644.196, 'text': 'okay?. These are the reasons.', 'start': 2642.334, 'duration': 1.862}, {'end': 2647.738, 'text': "See, we've got these things in JUnit as well.", 'start': 2644.456, 'duration': 3.282}, {'end': 2648.158, 'text': 'all right?', 'start': 2647.738, 'duration': 0.42}], 'summary': 'Testng is more flexible and powerful than junit due to its functionalities like annotations, prioritization, dependency, disabling a test case, grouping assertions, parallel testing, and report generation.', 'duration': 30.466, 'max_score': 2617.692, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2617692.jpg'}, {'end': 2726.776, 'src': 'heatmap', 'start': 2592.545, 'weight': 2, 'content': [{'end': 2596.187, 'text': 'Use test engine selenium for test management and report generation.', 'start': 2592.545, 'duration': 3.642}, {'end': 2604.236, 'text': "Now this test management is basically handling your test suite and we've got a beautiful file called testng.xml,", 'start': 2596.807, 'duration': 7.429}, {'end': 2608.701, 'text': 'or you can call it configuration file, which helps you manage your test suite.', 'start': 2604.236, 'duration': 4.465}, {'end': 2617.212, 'text': 'Okay, what is TestNG? TestNG is an open source testing framework inspired by JUnit.', 'start': 2609.426, 'duration': 7.786}, {'end': 2620.674, 'text': 'It stands for Test Next Generation.', 'start': 2617.692, 'duration': 2.982}, {'end': 2627.82, 'text': 'TestNG is more flexible and powerful than JUnit because of below functionalities.', 'start': 2621.555, 'duration': 6.265}, {'end': 2629.947, 'text': "We'll just go through these.", 'start': 2628.786, 'duration': 1.161}, {'end': 2642.334, 'text': 'Annotations, prioritization method, dependency, disabling a test case, grouping assertions, parallel testing and report generation.', 'start': 2630.627, 'duration': 11.707}, {'end': 2644.196, 'text': 'okay?. These are the reasons.', 'start': 2642.334, 'duration': 1.862}, {'end': 2647.738, 'text': "See, we've got these things in JUnit as well.", 'start': 2644.456, 'duration': 3.282}, {'end': 2648.158, 'text': 'all right?', 'start': 2647.738, 'duration': 0.42}, {'end': 2654.702, 'text': "It does mean that we don't have annotation in TestNG or we cannot disable the test case in TestNG.", 'start': 2648.298, 'duration': 6.404}, {'end': 2655.623, 'text': 'Yes, we can.', 'start': 2654.962, 'duration': 0.661}, {'end': 2661.5, 'text': "But TestNG is more flexible, it's more powerful than JUnit.", 'start': 2656.536, 'duration': 4.964}, {'end': 2667.645, 'text': "Let's talk about method dependency, okay? Method dependency cannot be done in JUnit.", 'start': 2662.181, 'duration': 5.464}, {'end': 2672.723, 'text': "So what do you mean by method dependency? Let's say you want to run test script.", 'start': 2668.085, 'duration': 4.638}, {'end': 2674.744, 'text': 'Okay, it has got multiple test cases.', 'start': 2672.823, 'duration': 1.921}, {'end': 2679.027, 'text': 'However, one test case is dependent on the execution of the other.', 'start': 2675.325, 'duration': 3.702}, {'end': 2684.01, 'text': 'So until and unless you execute that dependent test case, this one cannot be run.', 'start': 2679.047, 'duration': 4.963}, {'end': 2691.034, 'text': "So using this functionality in testng, so we've got an attribute called dependsOn.", 'start': 2684.85, 'duration': 6.184}, {'end': 2694.055, 'text': 'So depends on methods and depends on groups.', 'start': 2691.534, 'duration': 2.521}, {'end': 2700.776, 'text': "We've got two functions using which, using these attributes, we can specify dependency.", 'start': 2694.155, 'duration': 6.621}, {'end': 2712.009, 'text': 'Prioritization, we can prioritize our test cases by giving some priority numbers, we can prioritize our test cases as well.', 'start': 2701.584, 'duration': 10.425}, {'end': 2716.571, 'text': 'Disabling a test case, I can disable a test case also.', 'start': 2712.829, 'duration': 3.742}, {'end': 2724.135, 'text': 'So in JUnit, you use an annotation called ignore to disable a test case.', 'start': 2717.031, 'duration': 7.104}, {'end': 2726.776, 'text': 'Here, you can disable a test case in two ways.', 'start': 2724.155, 'duration': 2.621}], 'summary': 'Using testng for test management and report generation, which offers more flexibility and power than junit, with functionalities including annotations, prioritization, dependency, disabling test cases, grouping assertions, parallel testing, and report generation.', 'duration': 51.451, 'max_score': 2592.545, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2592545.jpg'}, {'end': 2897.961, 'src': 'embed', 'start': 2874.671, 'weight': 3, 'content': [{'end': 2881.702, 'text': 'But just to get rid of those lines of code and do it in a more structured way like a tester, you can use assertions.', 'start': 2874.671, 'duration': 7.031}, {'end': 2883.545, 'text': 'Parallel testing.', 'start': 2882.403, 'duration': 1.142}, {'end': 2889.354, 'text': 'You can achieve parallel testing, cross-browser testing using TestNG.', 'start': 2884.186, 'duration': 5.168}, {'end': 2893.178, 'text': 'So parallel when it comes to running test cases parallelly.', 'start': 2890.055, 'duration': 3.123}, {'end': 2897.961, 'text': 'You can run your test cases parallelly on the same kind of browser.', 'start': 2893.798, 'duration': 4.163}], 'summary': 'Testng enables parallel testing for running test cases concurrently on the same browser.', 'duration': 23.29, 'max_score': 2874.671, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2874671.jpg'}, {'end': 3052.845, 'src': 'embed', 'start': 3021.978, 'weight': 1, 'content': [{'end': 3027.53, 'text': 'Main function is written when your class is an application, okay? These are your test scripts.', 'start': 3021.978, 'duration': 5.552}, {'end': 3031.373, 'text': 'So how will you send a parameter here?', 'start': 3028.191, 'duration': 3.182}, {'end': 3041.06, 'text': 'For that, you will take help of an annotation and a feature within your testng.xml, using which you can send parameters.', 'start': 3031.813, 'duration': 9.247}, {'end': 3044.342, 'text': 'you can send arguments to your test cases.', 'start': 3041.06, 'duration': 3.282}, {'end': 3052.845, 'text': 'And parameterization in TestNG can be done in two ways, using parameters and using data providers.', 'start': 3045.343, 'duration': 7.502}], 'summary': 'Testng allows parameterization in two ways: using parameters and data providers.', 'duration': 30.867, 'max_score': 3021.978, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3021978.jpg'}], 'start': 2538.64, 'title': 'Testng advantages', 'summary': 'Covers testng benefits such as managing test suites, method dependency, prioritization, disabling test cases, grouping, and assertions, offering more flexibility and power than junit. it also explores html report generation, parallel testing support, grouping and prioritizing test cases, method execution using annotations, and parameterization in two ways, with data-driven testing and limitations of sending one value at a time with parameters.', 'chapters': [{'end': 2873.891, 'start': 2538.64, 'title': 'Testng features and benefits', 'summary': 'Covers the benefits of using testng over junit, including the ability to manage test suites using testng.xml, method dependency for running test cases, prioritization, disabling test cases, grouping test cases based on components, and assertions for comparing and testing, offering more flexibility and power than junit.', 'duration': 335.251, 'highlights': ['TestNG is more flexible and powerful than JUnit due to its functionalities such as annotations, prioritization, method dependency, disabling test cases, grouping, parallel testing, and report generation.', "Method dependency in TestNG allows for running test cases with dependencies, using the 'dependsOn' attribute, which is not available in JUnit.", 'TestNG allows prioritization of test cases by assigning priority numbers, providing a feature not available in JUnit.', "Disabling test cases in TestNG can be done using attributes in the test class or via the testng.xml configuration file, offering more flexibility compared to JUnit's 'ignore' annotation.", 'Grouping test cases in TestNG allows for organizing and running specific test cases based on components, a feature not available in JUnit.', 'Assertions in TestNG allow for comparisons and testing, providing results in Boolean format, offering more comprehensive testing capabilities than JUnit.']}, {'end': 3165.674, 'start': 2874.671, 'title': 'Testng for parallel testing', 'summary': 'Covers the advantages of testng, including html report generation, parallel testing support, grouping and prioritizing test cases, using annotations for executing methods, and parameterization in two ways, with data-driven testing allowing running test cases with multiple sets of data and the limitation of sending only one value at a time with parameters.', 'duration': 291.003, 'highlights': ['TestNG supports parameterization in two ways, with parameters allowing sending only one value at a time and data provider enabling data-driven testing for running test cases with multiple sets of data.', 'Advantages of TestNG include HTML report generation, support for parallel testing, grouping and prioritizing test cases, and using annotations for executing methods.', 'TestNG enables parallel testing by running test cases parallelly on the same kind of browser or different browsers, and supports cross-browser testing.']}], 'duration': 627.034, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw2538640.jpg', 'highlights': ['TestNG is more flexible and powerful than JUnit, offering functionalities such as annotations, prioritization, method dependency, disabling test cases, grouping, parallel testing, and report generation.', 'TestNG supports parameterization in two ways, with parameters allowing sending only one value at a time and data provider enabling data-driven testing for running test cases with multiple sets of data.', "Method dependency in TestNG allows for running test cases with dependencies using the 'dependsOn' attribute, a feature not available in JUnit.", 'TestNG enables parallel testing by running test cases parallelly on the same kind of browser or different browsers, and supports cross-browser testing.', "Disabling test cases in TestNG can be done using attributes in the test class or via the testng.xml configuration file, offering more flexibility compared to JUnit's 'ignore' annotation."]}, {'end': 4226.89, 'segs': [{'end': 3351.792, 'src': 'embed', 'start': 3328.062, 'weight': 0, 'content': [{'end': 3337.907, 'text': "We'll talk about them now in these slides, okay? Annotations in TestNG are used to control the next method to be executed in the program.", 'start': 3328.062, 'duration': 9.845}, {'end': 3341.348, 'text': 'TestNG programs will not have main method.', 'start': 3338.247, 'duration': 3.101}, {'end': 3344.309, 'text': "Let me try and use my spotlight, I'm here.", 'start': 3341.828, 'duration': 2.481}, {'end': 3351.792, 'text': 'Test programs will not have the main method, however, all methods will be annotated with at the rate.', 'start': 3344.829, 'duration': 6.963}], 'summary': 'Testng annotations control method execution in programs without main method.', 'duration': 23.73, 'max_score': 3328.062, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3328062.jpg'}, {'end': 3477.952, 'src': 'embed', 'start': 3445.771, 'weight': 2, 'content': [{'end': 3448.153, 'text': 'Then comes a before class and after class.', 'start': 3445.771, 'duration': 2.382}, {'end': 3460.978, 'text': 'Annotated method will run once before the first test method in the current class is invoked and after class will run once after all the test methods in the current class have run.', 'start': 3448.846, 'duration': 12.132}, {'end': 3469.706, 'text': 'That means these two annotated functions will run just once, once in the beginning and once in the end.', 'start': 3461.378, 'duration': 8.328}, {'end': 3473.289, 'text': 'Then comes your before group and after group.', 'start': 3470.427, 'duration': 2.862}, {'end': 3477.952, 'text': "Let's say you want to run something before any groups run, okay?", 'start': 3473.769, 'duration': 4.183}], 'summary': 'Annotated methods run once before/after test methods, before/after all test methods in a class.', 'duration': 32.181, 'max_score': 3445.771, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3445771.jpg'}, {'end': 3544.168, 'src': 'embed', 'start': 3515.521, 'weight': 1, 'content': [{'end': 3521.887, 'text': 'So it depends how you want to place these annotations, okay? You may not put both of them together.', 'start': 3515.521, 'duration': 6.366}, {'end': 3530.296, 'text': "You might just use before test and you might just use before class, okay? One more thing, don't get confused with before test here.", 'start': 3521.928, 'duration': 8.368}, {'end': 3535.881, 'text': "Before test doesn't mean you have to run it before every test method, no.", 'start': 3530.676, 'duration': 5.205}, {'end': 3538.044, 'text': "For that, we've got before method.", 'start': 3536.202, 'duration': 1.842}, {'end': 3544.168, 'text': 'Before test means before all the tests, okay? Before suite and after suite.', 'start': 3538.584, 'duration': 5.584}], 'summary': 'Annotations can be placed before test or class, not together. before test runs before all tests, before suite and after suite.', 'duration': 28.647, 'max_score': 3515.521, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3515521.jpg'}, {'end': 3675.834, 'src': 'embed', 'start': 3648.953, 'weight': 3, 'content': [{'end': 3652.256, 'text': "I'll just tell you how to get TestNG into your Eclipse.", 'start': 3648.953, 'duration': 3.303}, {'end': 3656.998, 'text': 'okay?, You just need to go to Help and go to Eclipse Marketplace.', 'start': 3652.256, 'duration': 4.742}, {'end': 3661.101, 'text': "You can also go to install new software and you'll find this option.", 'start': 3657.458, 'duration': 3.643}, {'end': 3663.704, 'text': "If you Google it, you'll find this one a number of times.", 'start': 3661.141, 'duration': 2.563}, {'end': 3668.808, 'text': 'But I prefer Eclipse Marketplace, okay? Go to Eclipse Marketplace.', 'start': 3664.204, 'duration': 4.604}, {'end': 3675.834, 'text': 'The Marketplace will actually get all the plugins that you would like to have for your Eclipse.', 'start': 3669.329, 'duration': 6.505}], 'summary': 'Get testng in eclipse via eclipse marketplace or install new software.', 'duration': 26.881, 'max_score': 3648.953, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3648953.jpg'}, {'end': 3957.895, 'src': 'heatmap', 'start': 3763.485, 'weight': 4, 'content': [{'end': 3778.919, 'text': 'So you just click on install new software, click on this add button, here type in TestNG and then here you have to write beust.com slash eclipse.', 'start': 3763.485, 'duration': 15.434}, {'end': 3784.384, 'text': "Now that's again the same site which will let you download your TestNG.", 'start': 3779.299, 'duration': 5.085}, {'end': 3786.146, 'text': 'and then press OK.', 'start': 3785.104, 'duration': 1.042}, {'end': 3794.615, 'text': "Now this takes time, it takes a longer duration, I'll just stop it here itself, I'll cancel it, otherwise it should find within a few seconds.", 'start': 3786.586, 'duration': 8.029}, {'end': 3796.337, 'text': 'And again with this.', 'start': 3795.496, 'duration': 0.841}, {'end': 3804.106, 'text': 'also, once this test ng comes in, you check the checkbox and check on the checkbox according to your requirement, okay?', 'start': 3796.337, 'duration': 7.769}, {'end': 3806.087, 'text': 'Then click on next, next, next.', 'start': 3804.646, 'duration': 1.441}, {'end': 3811.33, 'text': 'Here also you will again get that popup, that kind of warning that would you really like to get this.', 'start': 3806.487, 'duration': 4.843}, {'end': 3814.692, 'text': 'This is not trusted or something kind of.', 'start': 3812.25, 'duration': 2.442}, {'end': 3818.194, 'text': "It'll be a warning, okay? And then click on finish.", 'start': 3815.212, 'duration': 2.982}, {'end': 3822.216, 'text': "So I'll just cancel it for now, okay? This is how you can get it.", 'start': 3818.834, 'duration': 3.382}, {'end': 3828.279, 'text': 'Now, how do you verify that TestNG has got installed successfully??', 'start': 3822.936, 'duration': 5.343}, {'end': 3833.042, 'text': 'Right click here, go to new and then go to other.', 'start': 3828.639, 'duration': 4.403}, {'end': 3837.581, 'text': "okay?. Like, you've got Java and you've got JUnit here.", 'start': 3833.042, 'duration': 4.539}, {'end': 3840.402, 'text': 'this comes by default along with your Eclipse, okay?', 'start': 3837.581, 'duration': 2.821}, {'end': 3844.784, 'text': "But this doesn't come up until and unless you install this plugin.", 'start': 3840.882, 'duration': 3.902}, {'end': 3854.507, 'text': "So you install TestNG and if you're able to see this folder and this option TestNG class, that means your installation was successful.", 'start': 3845.424, 'duration': 9.083}, {'end': 3856.668, 'text': 'okay?. Click on Next.', 'start': 3854.507, 'duration': 2.161}, {'end': 3860.366, 'text': 'Now, it is all about annotations.', 'start': 3857.503, 'duration': 2.863}, {'end': 3866.512, 'text': "So let me give you a brief on annotations and meanwhile, I'll just create this class.", 'start': 3861.147, 'duration': 5.365}, {'end': 3868.654, 'text': 'So let me give it some name.', 'start': 3866.532, 'duration': 2.122}, {'end': 3876.022, 'text': "We'll say test annotations, okay? That's how I want to name this class and finish.", 'start': 3869.455, 'duration': 6.567}, {'end': 3880.927, 'text': 'I have not included any annotation from the options that it was giving me.', 'start': 3876.943, 'duration': 3.984}, {'end': 3890.801, 'text': "Now, before I go to my notepad and start talking about the annotations, can you all see that you're getting these errors here and here as well?", 'start': 3881.607, 'duration': 9.194}, {'end': 3896.211, 'text': 'If you click on it, it is asking you to add TestNG library.', 'start': 3890.821, 'duration': 5.39}, {'end': 3903.493, 'text': 'See, it has come up as a plugin into your tool, but you have still not brought it into your project.', 'start': 3896.731, 'duration': 6.762}, {'end': 3905.493, 'text': "You haven't imported this library.", 'start': 3903.533, 'duration': 1.96}, {'end': 3908.074, 'text': 'So add, just double click on it.', 'start': 3906.054, 'duration': 2.02}, {'end': 3915.176, 'text': 'You can see as soon as you double clicked on it, the errors have gone from here and this thing came up here.', 'start': 3908.554, 'duration': 6.622}, {'end': 3922.716, 'text': 'That means that TestNG has been added to your project, okay? Just save it.', 'start': 3915.656, 'duration': 7.06}, {'end': 3925.797, 'text': "Now let's go back to the notepad and talk about annotations.", 'start': 3923.176, 'duration': 2.621}, {'end': 3929.379, 'text': "So this is one and then you've got at the rate before test.", 'start': 3926.157, 'duration': 3.222}, {'end': 3933.821, 'text': "You've got at the rate after test.", 'start': 3931.72, 'duration': 2.101}, {'end': 3938.684, 'text': "You've got before class.", 'start': 3937.083, 'duration': 1.601}, {'end': 3940.444, 'text': "Let's just skip this.", 'start': 3939.464, 'duration': 0.98}, {'end': 3942.125, 'text': 'This is gonna take time to type in.', 'start': 3940.504, 'duration': 1.621}, {'end': 3947.348, 'text': 'Before class, after class, before suite, after suite, before group, after group.', 'start': 3942.225, 'duration': 5.123}, {'end': 3951.43, 'text': 'So you can use all the annotations as and when required.', 'start': 3947.708, 'duration': 3.722}, {'end': 3957.895, 'text': "And why is it said that it's better from JUnit? Because in JUnit, we've got limited number of annotations.", 'start': 3952.213, 'duration': 5.682}], 'summary': 'Installing testng plugin in eclipse and verifying successful installation with annotations and library import.', 'duration': 26.175, 'max_score': 3763.485, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3763485.jpg'}], 'start': 3166.394, 'title': 'Testng annotations and setup', 'summary': 'Covers writing business logic for testng tests, inserting annotations, understanding test execution flow, usage of annotations for pre and post conditions, and setting up testng in eclipse for successful installation and project integration.', 'chapters': [{'end': 3398.709, 'start': 3166.394, 'title': 'Testng annotations and business logic', 'summary': 'Covers the process of writing business logic for testng tests, inserting testng annotations, and understanding the purpose and placement of annotations, along with the flow of test execution and the absence of a main method in testng programs.', 'duration': 232.315, 'highlights': ['TestNG annotations are used to control the next method to be executed in the program, and all methods will be annotated with @Test.', 'Annotations in TestNG, such as @Test, @BeforeMethod, and @AfterMethod, are used to mark methods as test methods and set up or tear down methods.', 'Understanding the purpose and placement of annotations, along with the absence of a main method in TestNG programs, is crucial for writing effective test scripts.']}, {'end': 3562.623, 'start': 3398.749, 'title': 'Annotations in test methods', 'summary': 'Explains the usage of annotations such as @beforemethod, @aftermethod, @beforeclass, @afterclass, @beforegroup, @aftergroup, @beforetest, and @aftertest for setting up pre and post conditions for test execution.', 'duration': 163.874, 'highlights': ['The chapter explains the usage of annotations such as @BeforeMethod, @AfterMethod, @BeforeClass, @AfterClass, @BeforeGroup, @AfterGroup, @BeforeTest, and @AfterTest.', 'The @BeforeMethod and @AfterMethod annotations are used to execute functions before and after every test method, while @BeforeClass and @AfterClass run once before the first test method and after all the test methods in the current class have run.', 'The @BeforeGroup and @AfterGroup annotations are used to run functions before and after every group of test methods, and @BeforeTest and @AfterTest are used to set up pre and post conditions for all the test methods.']}, {'end': 3929.379, 'start': 3563.343, 'title': 'Setting up testng in eclipse', 'summary': 'Explains how to set up testng in eclipse, including getting the testng plugin from eclipse marketplace, installing it, and verifying the successful installation by creating a testng class, emphasizing the importance of adding the testng library to the project.', 'duration': 366.036, 'highlights': ['The chapter explains how to get the TestNG plugin from Eclipse Marketplace and install it, including the step-by-step process and the warning prompts encountered during installation.', 'It emphasizes the importance of adding the TestNG library to the project by demonstrating how to resolve errors and verify successful installation by creating a TestNG class in Eclipse.', 'It demonstrates how to add the TestNG library to the project, showing the process of resolving errors and verifying successful installation by creating a TestNG class in Eclipse.']}, {'end': 4226.89, 'start': 3931.72, 'title': 'Annotations in testing', 'summary': 'Discusses the advantages of using testng over junit due to its numerous annotations and demonstrates the usage of before and after annotations for testing functions.', 'duration': 295.17, 'highlights': ['TestNG offers a wide range of annotations such as @BeforeTest, @AfterTest, @BeforeMethod, @AfterMethod, @BeforeClass, and @AfterClass, providing more flexibility compared to JUnit.', 'The demonstration includes the usage of @BeforeTest and @AfterTest annotations to run functions before and after any test, showcasing the practical application of annotations in testing functions.', 'The speaker also demonstrates the process of increasing font size in Eclipse, providing a step-by-step guide to navigate the preferences and modify the text font size.']}], 'duration': 1060.496, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw3166394.jpg', 'highlights': ['TestNG annotations control method execution, all methods annotated with @Test.', 'Understanding purpose and placement of annotations is crucial for effective test scripts.', 'Usage of annotations like @BeforeMethod, @AfterMethod, @BeforeClass, @AfterClass explained.', 'TestNG plugin installation in Eclipse Marketplace and adding TestNG library demonstrated.', 'TestNG offers flexibility with annotations like @BeforeTest, @AfterTest, @BeforeMethod, @AfterMethod.']}, {'end': 5178.547, 'segs': [{'end': 4259.178, 'src': 'embed', 'start': 4227.511, 'weight': 0, 'content': [{'end': 4233.116, 'text': "Let's make it 12, all right, and okay, and okay.", 'start': 4227.511, 'duration': 5.605}, {'end': 4235.309, 'text': 'Yeah, this looks better now.', 'start': 4234.008, 'duration': 1.301}, {'end': 4239.35, 'text': "So we've got all these test methods here.", 'start': 4235.969, 'duration': 3.381}, {'end': 4245.433, 'text': "Now what I'm going to do is I'm gonna include only some system output statements.", 'start': 4240.17, 'duration': 5.263}, {'end': 4249.014, 'text': 'So how do you write them? S-Y-S-O-U-T control space.', 'start': 4245.473, 'duration': 3.541}, {'end': 4251.615, 'text': 'So it automatically expands it for you.', 'start': 4249.414, 'duration': 2.201}, {'end': 4259.178, 'text': "So I'll say inside F1 and here again sysout, it will automatically expand it for you.", 'start': 4251.635, 'duration': 7.543}], 'summary': '12 test methods added with system output statements.', 'duration': 31.667, 'max_score': 4227.511, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4227511.jpg'}, {'end': 4397.574, 'src': 'embed', 'start': 4368.451, 'weight': 1, 'content': [{'end': 4374.014, 'text': "This bar tells me since it's all green that none of the test methods have failed.", 'start': 4368.451, 'duration': 5.563}, {'end': 4378.397, 'text': 'How many test methods do we have here? Two, F1 and F2.', 'start': 4374.374, 'duration': 4.023}, {'end': 4383.58, 'text': 'And if you look at the result, you can see only F1 and F2 running here.', 'start': 4378.857, 'duration': 4.723}, {'end': 4389.624, 'text': 'Why? Because I have to basically run the test methods and not the other methods.', 'start': 4384, 'duration': 5.624}, {'end': 4397.574, 'text': 'There can be other methods as well without any annotation, but if these methods are annotated other than at the rate test,', 'start': 4390.29, 'duration': 7.284}], 'summary': 'All 2 test methods (f1 and f2) passed without failure.', 'duration': 29.123, 'max_score': 4368.451, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4368451.jpg'}, {'end': 4476.523, 'src': 'embed', 'start': 4444.315, 'weight': 2, 'content': [{'end': 4456.037, 'text': 'And before and after F1 and F2, these functions have run before every test method, after every test method again, before every test method,', 'start': 4444.315, 'duration': 11.722}, {'end': 4457.478, 'text': 'after every test method.', 'start': 4456.037, 'duration': 1.441}, {'end': 4468.28, 'text': 'That means these functions before method and after method, they ran before and after every test method.', 'start': 4458.078, 'duration': 10.202}, {'end': 4473.281, 'text': 'Test method means methods that are annotated with at the rate test.', 'start': 4468.54, 'duration': 4.741}, {'end': 4476.523, 'text': "Right, let's again go back to the result.", 'start': 4474.082, 'duration': 2.441}], 'summary': 'Functions f1 and f2 run before and after every test method.', 'duration': 32.208, 'max_score': 4444.315, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4444315.jpg'}, {'end': 4559.303, 'src': 'embed', 'start': 4530.242, 'weight': 3, 'content': [{'end': 4531.504, 'text': 'using configuration file?', 'start': 4530.242, 'duration': 1.262}, {'end': 4538.475, 'text': 'Okay, now understand that guys, when these annotations were created, of course they were created for some reason.', 'start': 4531.792, 'duration': 6.683}, {'end': 4552.641, 'text': 'The reason is that JUnit and TestNG are used because you want to test your test code first rather than using your test code for your web application.', 'start': 4539.055, 'duration': 13.586}, {'end': 4557.443, 'text': 'JUnit is basically used by developers to unit test their code.', 'start': 4553.281, 'duration': 4.162}, {'end': 4559.303, 'text': 'So first they unit,', 'start': 4557.983, 'duration': 1.32}], 'summary': 'Junit and testng are used to test code, junit is used for unit testing by developers.', 'duration': 29.061, 'max_score': 4530.242, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4530242.jpg'}, {'end': 4772.705, 'src': 'heatmap', 'start': 4685.057, 'weight': 1, 'content': [{'end': 4690.18, 'text': "So that's the use of these annotations when combined with Selenium, okay?", 'start': 4685.057, 'duration': 5.123}, {'end': 4695.783, 'text': 'Now the next thing is how do we configure a file with the same thing?', 'start': 4690.56, 'duration': 5.223}, {'end': 4700.265, 'text': "So there's a file called testng.xml, or you can name it anything.", 'start': 4696.383, 'duration': 3.882}, {'end': 4701.385, 'text': 'It is a .', 'start': 4700.285, 'duration': 1.1}, {'end': 4702.286, 'text': 'xml file.', 'start': 4701.385, 'duration': 0.901}, {'end': 4711.868, 'text': "So what I'm going to do here in this project is I will right click, I'll go to new and I'm gonna create a folder because it's a configuration file.", 'start': 4702.913, 'duration': 8.955}, {'end': 4715.815, 'text': 'So I really need to have another folder named config.', 'start': 4712.269, 'duration': 3.546}, {'end': 4722.296, 'text': "So I've created this config folder here and in this folder, so I'll right click on it, go to new again.", 'start': 4716.491, 'duration': 5.805}, {'end': 4726.039, 'text': "I'll create this file, testng.exml.", 'start': 4722.316, 'duration': 3.723}, {'end': 4732.944, 'text': 'So now people ask me that how do you create dot properties or how do you create a XML file here? It is a file.', 'start': 4726.459, 'duration': 6.485}, {'end': 4734.786, 'text': 'So you choose the option file.', 'start': 4733.264, 'duration': 1.522}, {'end': 4738.088, 'text': 'Then the only thing left is to give the extension.', 'start': 4734.946, 'duration': 3.142}, {'end': 4740.851, 'text': 'So if it is a dot properties file, give dot properties.', 'start': 4738.108, 'duration': 2.743}, {'end': 4743.473, 'text': 'If it is an XML file, give dot XML.', 'start': 4741.291, 'duration': 2.182}, {'end': 4745.394, 'text': 'and then click Finish.', 'start': 4744.173, 'duration': 1.221}, {'end': 4749.456, 'text': "Now you can see that we've got an XML file with node and content.", 'start': 4746.054, 'duration': 3.402}, {'end': 4751.516, 'text': "Don't get worried, that's just the design.", 'start': 4749.636, 'duration': 1.88}, {'end': 4753.177, 'text': 'You actually have to go to Source.', 'start': 4751.637, 'duration': 1.54}, {'end': 4756.639, 'text': 'So go to Source and start writing the script.', 'start': 4753.677, 'duration': 2.962}, {'end': 4764.3, 'text': "Now, what do we need to write here? I'll just again go back to the result and show you something here.", 'start': 4757.395, 'duration': 6.905}, {'end': 4768.782, 'text': "If you see here guys carefully, you can see that there's F1 and F2.", 'start': 4764.98, 'duration': 3.802}, {'end': 4772.705, 'text': 'These are the functions that we wrote and they were annotated with at the rate test.', 'start': 4768.822, 'duration': 3.883}], 'summary': 'Creating testng.xml file for configuring annotations with selenium in project', 'duration': 87.648, 'max_score': 4685.057, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4685057.jpg'}, {'end': 4726.039, 'src': 'embed', 'start': 4702.913, 'weight': 4, 'content': [{'end': 4711.868, 'text': "So what I'm going to do here in this project is I will right click, I'll go to new and I'm gonna create a folder because it's a configuration file.", 'start': 4702.913, 'duration': 8.955}, {'end': 4715.815, 'text': 'So I really need to have another folder named config.', 'start': 4712.269, 'duration': 3.546}, {'end': 4722.296, 'text': "So I've created this config folder here and in this folder, so I'll right click on it, go to new again.", 'start': 4716.491, 'duration': 5.805}, {'end': 4726.039, 'text': "I'll create this file, testng.exml.", 'start': 4722.316, 'duration': 3.723}], 'summary': 'Creating a config folder and a testng.exml file for a project.', 'duration': 23.126, 'max_score': 4702.913, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4702913.jpg'}, {'end': 5030.406, 'src': 'heatmap', 'start': 4852.242, 'weight': 0.755, 'content': [{'end': 4854.643, 'text': 'Then comes your test.', 'start': 4852.242, 'duration': 2.401}, {'end': 4858.164, 'text': 'Then comes your classes.', 'start': 4855.603, 'duration': 2.561}, {'end': 4866.065, 'text': 'Within classes comes your class and within class comes your methods.', 'start': 4859.084, 'duration': 6.981}, {'end': 4872.347, 'text': 'Okay, just do control A, control shift and F.', 'start': 4867.145, 'duration': 5.202}, {'end': 4874.247, 'text': 'This will get formatted and look beautiful.', 'start': 4872.347, 'duration': 1.9}, {'end': 4878.008, 'text': "That's the basic structure of your XML.", 'start': 4874.967, 'duration': 3.041}, {'end': 4881.53, 'text': "It doesn't mean that it'll have only these tags, no.", 'start': 4878.469, 'duration': 3.061}, {'end': 4886.552, 'text': 'There are a number of tags here that we can use, but these are the basic ones.', 'start': 4881.87, 'duration': 4.682}, {'end': 4895.097, 'text': "This is the structure you have to first follow, okay? If I don't give it a name, it'll again come up as default suite.", 'start': 4887.252, 'duration': 7.845}, {'end': 4898.179, 'text': 'So I definitely would let some name here.', 'start': 4895.217, 'duration': 2.962}, {'end': 4907.565, 'text': 'So how do you give a name? Just type in name attribute like you have in HTML, right? I showed you when I took those tutorials finding the elements.', 'start': 4898.639, 'duration': 8.926}, {'end': 4914.55, 'text': "So how do we write that? How is it mentioned, the attributes? We've got this tag and then attribute with attribute and value.", 'start': 4907.965, 'duration': 6.585}, {'end': 4916.451, 'text': 'How do you write the value? In double quotes.', 'start': 4914.81, 'duration': 1.641}, {'end': 4920.674, 'text': "So let's say I'm naming it as test annotations.", 'start': 4916.851, 'duration': 3.823}, {'end': 4930.201, 'text': "Okay, done, then I'll give the name to my test scenario as well and I will give test.", 'start': 4921.815, 'duration': 8.386}, {'end': 4938.666, 'text': "or maybe let's give test ng to this and then here we'll give test annotations to actually the test scenario, okay?", 'start': 4930.201, 'duration': 8.465}, {'end': 4940.968, 'text': 'And then classes and class.', 'start': 4939.527, 'duration': 1.441}, {'end': 4947.132, 'text': "Now I don't want to include or exclude methods because I want to run all the methods, I'll just get rid of it.", 'start': 4941.508, 'duration': 5.624}, {'end': 4954.875, 'text': 'So in classes, my class name is, in testng, you always have to write a class name along with its package name.', 'start': 4947.705, 'duration': 7.17}, {'end': 4958.2, 'text': 'So this is test annotations within testng.', 'start': 4955.516, 'duration': 2.684}, {'end': 4972.881, 'text': 'So how do you write it? Testng.testannotations, okay? All right, and you can end this class here itself and get rid of this one.', 'start': 4958.3, 'duration': 14.581}, {'end': 4974.403, 'text': 'Delete, okay.', 'start': 4973.422, 'duration': 0.981}, {'end': 4976.565, 'text': 'So this is very basic stuff.', 'start': 4974.923, 'duration': 1.642}, {'end': 4978.687, 'text': "You've given a name to your test suite.", 'start': 4976.825, 'duration': 1.862}, {'end': 4983.432, 'text': "You've given a name to your test scenario and there's this class that you want to run.", 'start': 4979.147, 'duration': 4.285}, {'end': 4984.533, 'text': 'Control save.', 'start': 4983.572, 'duration': 0.961}, {'end': 4986.693, 'text': 'So remember this test.', 'start': 4985.231, 'duration': 1.462}, {'end': 4990.499, 'text': 'This is default suite, default test, this class and these functions.', 'start': 4987.034, 'duration': 3.465}, {'end': 5000.24, 'text': 'Now if I run this configuration file now rather than running this test, right click, run as, TestNG Suite.', 'start': 4991.02, 'duration': 9.22}, {'end': 5002.261, 'text': 'So can you observe here?', 'start': 5000.84, 'duration': 1.421}, {'end': 5008.444, 'text': "Rather than coming as TestNG Test this time it's coming up as TestNG Suite here,", 'start': 5002.581, 'duration': 5.863}, {'end': 5015.608, 'text': "because I'm using configuration file and the purpose of having configuration file is basically to design your test suite.", 'start': 5008.444, 'duration': 7.164}, {'end': 5017.329, 'text': 'okay? Do the test management.', 'start': 5015.608, 'duration': 1.721}, {'end': 5020.15, 'text': "So let's say I've clicked on it and it'll run.", 'start': 5018.029, 'duration': 2.121}, {'end': 5030.406, 'text': 'So if you go to TestNG, This is all green, which means it ran absolutely correct, and then F1 and F2, this class,', 'start': 5020.85, 'duration': 9.556}], 'summary': 'Basic structure of xml for test suite design in testng, including naming, class, and method configuration.', 'duration': 178.164, 'max_score': 4852.242, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4852242.jpg'}, {'end': 5118.525, 'src': 'embed', 'start': 5091.168, 'weight': 5, 'content': [{'end': 5099.191, 'text': "So we've got prioritization, we've got method, dependency disabling, grouping assertions, parallel testing and report generation.", 'start': 5091.168, 'duration': 8.023}, {'end': 5103.253, 'text': "So let's talk about them one by one, okay? Now, priority.", 'start': 5099.611, 'duration': 3.642}, {'end': 5107.498, 'text': 'Annotated methods can be prioritized in TestNG.', 'start': 5104.136, 'duration': 3.362}, {'end': 5112.901, 'text': 'Priority can be assigned as parameters while calling the test cases.', 'start': 5108.078, 'duration': 4.823}, {'end': 5118.525, 'text': 'If no priority is defined, the test cases will be executed in alphabetical order.', 'start': 5113.462, 'duration': 5.063}], 'summary': 'Testng allows prioritization of annotated methods; priority can be assigned as parameters while calling test cases.', 'duration': 27.357, 'max_score': 5091.168, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5091168.jpg'}], 'start': 4227.511, 'title': 'Writing and running testng methods', 'summary': 'Demonstrates writing test methods with system output statements and running a testng class to execute the test methods, resulting in a successful run with two test methods and no failures.', 'chapters': [{'end': 4415.062, 'start': 4227.511, 'title': 'Writing and running testng methods', 'summary': 'Demonstrates writing test methods with system output statements and running a testng class to execute the test methods, resulting in a successful run with two test methods and no failures.', 'duration': 187.551, 'highlights': ['The chapter covers writing test methods with system output statements to display before and after every test method, totaling to 12 test methods.', 'The instructor demonstrates running the TestNG class to execute the test methods, resulting in a successful run with two test methods (F1 and F2) and no failures.', 'The chapter emphasizes the process of running a TestNG class to execute the test methods, showcasing the absence of failures and successful execution of two test methods (F1 and F2).']}, {'end': 4749.456, 'start': 4415.996, 'title': 'Testng annotations and configuration', 'summary': 'Explores the use of before, after, and other annotations in testng, highlighting their significance in running setup and teardown methods before and after test methods, and the configuration of testng.xml file for organizing test suites and setting up test environment.', 'duration': 333.46, 'highlights': ['Test methods run after before method and before method, which run before and after every test method, respectively.', 'Explanation of the purpose of using TestNG and JUnit for unit testing and verification of code before deployment.', 'Explanation of the use of before test and after test annotations for invoking and closing the browser before and after running test cases when testing web applications with Selenium WebDriver.', 'Guidance on configuring the testng.xml file and creating a separate configuration folder for organizing test suites and setting up the test environment.']}, {'end': 5178.547, 'start': 4749.636, 'title': 'Understanding testng annotations and attributes', 'summary': 'Discusses the structure of a testng xml file, explaining the default test and default suite, and demonstrates the use of attributes like prioritization in testng annotated methods.', 'duration': 428.911, 'highlights': ['The chapter explains the structure of a TestNG XML file, including the default test and default suite, and demonstrates the use of attributes like prioritization in TestNG annotated methods.', 'Annotated methods in TestNG can be prioritized, with priority assigned as parameters while calling the test cases, and if no priority is defined, the test cases will be executed in alphabetical order.', 'The chapter demonstrates the use of attributes like prioritization in TestNG annotated methods and showcases the structure of a TestNG XML file, including default test and default suite.']}], 'duration': 951.036, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw4227511.jpg', 'highlights': ['The chapter covers writing 12 test methods with system output statements.', 'Running the TestNG class results in a successful run with two test methods (F1 and F2) and no failures.', 'Test methods run after before method and before method, which run before and after every test method, respectively.', 'Explanation of using TestNG and JUnit for unit testing and code verification before deployment.', 'Guidance on configuring the testng.xml file and creating a separate configuration folder for organizing test suites and setting up the test environment.', 'The chapter explains the structure of a TestNG XML file and demonstrates the use of attributes like prioritization in TestNG annotated methods.']}, {'end': 6169.17, 'segs': [{'end': 5295.14, 'src': 'embed', 'start': 5213.147, 'weight': 1, 'content': [{'end': 5218.632, 'text': 'A, then D, then F, then H, then M, then O.', 'start': 5213.147, 'duration': 5.485}, {'end': 5229.981, 'text': "Now, you can very well see that if I'm not doing anything with my test order explicitly, then natural ordering is the one that will be followed.", 'start': 5218.632, 'duration': 11.349}, {'end': 5237.447, 'text': "When I say natural ordering, it means, if you're using alphabets, then the alphabetical order, and if you're using numbers along with them,", 'start': 5230.021, 'duration': 7.426}, {'end': 5238.829, 'text': 'then the ascending order.', 'start': 5237.447, 'duration': 1.382}, {'end': 5241.169, 'text': 'okay?, as in the case of F1 and F2..', 'start': 5238.829, 'duration': 2.34}, {'end': 5243.43, 'text': 'F1 ran first and then F2 ran.', 'start': 5241.389, 'duration': 2.041}, {'end': 5252.832, 'text': 'So what do we do in real time? Because in real time, my function names will not be A, B, C, D or anything.', 'start': 5244.15, 'duration': 8.682}, {'end': 5258.413, 'text': "They'll be like invoke browser, they'll be like login to Facebook, they'll be like sign up.", 'start': 5253.432, 'duration': 4.981}, {'end': 5260.573, 'text': "Let's take this example.", 'start': 5259.053, 'duration': 1.52}, {'end': 5262.554, 'text': 'I want to login to Facebook.', 'start': 5260.593, 'duration': 1.961}, {'end': 5269.015, 'text': 'So one function name is open browser and the next one is login to Facebook.', 'start': 5263.294, 'duration': 5.721}, {'end': 5281.586, 'text': 'And if you do not do anything with the execution order explicitly, the order of execution will be login to Facebook and then open browser,', 'start': 5269.674, 'duration': 11.912}, {'end': 5282.447, 'text': 'which is wrong.', 'start': 5281.586, 'duration': 0.861}, {'end': 5288.372, 'text': 'Getting my point? Because as per alphabetical ordering, L comes before O.', 'start': 5283.087, 'duration': 5.285}, {'end': 5291.518, 'text': 'L comes before O.', 'start': 5289.697, 'duration': 1.821}, {'end': 5293.639, 'text': "Now obviously it's a blunder.", 'start': 5291.518, 'duration': 2.121}, {'end': 5295.14, 'text': "We don't want that.", 'start': 5294.06, 'duration': 1.08}], 'summary': 'Natural ordering follows alphabetically or numerically, impacting function execution order.', 'duration': 81.993, 'max_score': 5213.147, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5213147.jpg'}, {'end': 5404.72, 'src': 'embed', 'start': 5354.85, 'weight': 0, 'content': [{'end': 5357.932, 'text': 'There are a number of things that are taken into consideration.', 'start': 5354.85, 'duration': 3.082}, {'end': 5361.834, 'text': 'Alphabetical order takes over your prioritization.', 'start': 5358.712, 'duration': 3.122}, {'end': 5364.495, 'text': 'And in alphabetical ordering also.', 'start': 5362.554, 'duration': 1.941}, {'end': 5366.834, 'text': 'you need to take care of that.', 'start': 5364.495, 'duration': 2.339}, {'end': 5370.635, 'text': "the test cases that you have prioritized, let's say,", 'start': 5366.834, 'duration': 3.801}, {'end': 5381.457, 'text': 'and the one that has the highest priority is that alphabet coming before the rest of the non-prioritized test cases or after them?', 'start': 5370.635, 'duration': 10.822}, {'end': 5382.857, 'text': 'I mean there are a lot of things.', 'start': 5381.477, 'duration': 1.38}, {'end': 5388.378, 'text': "You'll get confused if I just speak about that verbally, okay? Look at this.", 'start': 5382.877, 'duration': 5.501}, {'end': 5390.678, 'text': "I've given different priority numbers.", 'start': 5388.578, 'duration': 2.1}, {'end': 5395.639, 'text': 'Now in TestNG, lower the priority number, highest is the priority.', 'start': 5390.938, 'duration': 4.701}, {'end': 5404.72, 'text': 'Zero is the highest priority number, which means that if I have given zero to D, that means D will run first.', 'start': 5396.278, 'duration': 8.442}], 'summary': 'In testng, lower priority number means higher priority. zero is the highest priority, meaning a test case with priority zero will run first.', 'duration': 49.87, 'max_score': 5354.85, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5354850.jpg'}, {'end': 5667.268, 'src': 'embed', 'start': 5641.906, 'weight': 2, 'content': [{'end': 5649.717, 'text': 'So the list of methods this method depends on, there is no guarantee on the order on which the method dependent upon will be run.', 'start': 5641.906, 'duration': 7.811}, {'end': 5651.259, 'text': 'Just read this carefully.', 'start': 5650.237, 'duration': 1.022}, {'end': 5659.945, 'text': 'there is no guarantee on the order on which the methods depended upon will run,', 'start': 5651.983, 'duration': 7.962}, {'end': 5667.268, 'text': 'but you are guaranteed that all these methods will be run before the test method that contains this annotation is run.', 'start': 5659.945, 'duration': 7.323}], 'summary': 'Methods depend on run order is not guaranteed, but all methods will run before test method.', 'duration': 25.362, 'max_score': 5641.906, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5641906.jpg'}, {'end': 5765.224, 'src': 'embed', 'start': 5714.752, 'weight': 7, 'content': [{'end': 5726.117, 'text': 'So first D with the highest priority, then M, then your F, then your H, then your O, and in the end E.', 'start': 5714.752, 'duration': 11.365}, {'end': 5732.824, 'text': "Now you would wonder, that why didn't E run after H? Because dependency was getting over, no.", 'start': 5726.117, 'duration': 6.707}, {'end': 5738.985, 'text': 'If this happens, along with the priority, all the test cases that are already there in the queue,', 'start': 5733.304, 'duration': 5.681}, {'end': 5742.266, 'text': 'they will run first and then this dependent method will run.', 'start': 5738.985, 'duration': 3.281}, {'end': 5745.827, 'text': "okay?. All right, so that's how you mention.", 'start': 5742.266, 'duration': 3.561}, {'end': 5748.708, 'text': "Now I'm gonna do some twist here.", 'start': 5746.388, 'duration': 2.32}, {'end': 5754.33, 'text': "The twist is I'm going to include another attribute here which is called disabled.", 'start': 5749.289, 'duration': 5.041}, {'end': 5762.268, 'text': "Okay, before the twist, let's say, I am disabling this test case from here, this one.", 'start': 5755.25, 'duration': 7.018}, {'end': 5765.224, 'text': 'Now there are two ways to disable a test case.', 'start': 5763.123, 'duration': 2.101}], 'summary': 'Test cases prioritized: d>m>f>h>o>e, with disabled attribute introduced', 'duration': 50.472, 'max_score': 5714.752, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5714752.jpg'}, {'end': 5919.717, 'src': 'embed', 'start': 5882.911, 'weight': 5, 'content': [{'end': 5886.534, 'text': 'So new other TestNG class.', 'start': 5882.911, 'duration': 3.623}, {'end': 5889.877, 'text': "I'll say test dependency.", 'start': 5887.215, 'duration': 2.662}, {'end': 5894.674, 'text': 'using Facebook.', 'start': 5892.473, 'duration': 2.201}, {'end': 5898.716, 'text': "okay?. I'm gonna give you this example and finish, all right?", 'start': 5894.674, 'duration': 4.042}, {'end': 5906.719, 'text': 'Now here I need two functions open browser and I need login to Facebook.', 'start': 5899.236, 'duration': 7.483}, {'end': 5914.242, 'text': "So I'm gonna name one function as open browser and another one as at the rate test.", 'start': 5906.759, 'duration': 7.483}, {'end': 5919.717, 'text': 'Log into Facebook.', 'start': 5918.476, 'duration': 1.241}], 'summary': 'Using testng to demonstrate test dependency with facebook login.', 'duration': 36.806, 'max_score': 5882.911, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5882911.jpg'}], 'start': 5179.428, 'title': 'Testng test method execution', 'summary': 'Discusses the natural ordering of test method execution, potential issues with alphabetical ordering, test case prioritization, dependency, and disabling. it also explores the impact on execution order with specific examples and real-time application.', 'chapters': [{'end': 5295.14, 'start': 5179.428, 'title': 'Test method execution order', 'summary': 'Discusses the natural ordering of test method execution and the potential issues with alphabetical ordering, with a specific example of login functions executing in the wrong order.', 'duration': 115.712, 'highlights': ['The natural ordering of test methods follows alphabetical order for function names and ascending order for numbers.', "The potential issue of using alphabetical ordering for test method execution is illustrated with an example of login functions 'login to Facebook' and 'open browser' executing in the incorrect order.", "Real-time function names such as 'invoke browser' and 'login to Facebook' highlight the practical implications of understanding and controlling test method execution order."]}, {'end': 5742.266, 'start': 5295.78, 'title': 'Test case prioritization and dependency', 'summary': "Discusses the prioritization of test cases, with zero being the highest priority in testng, and the impact of prioritization on the execution order. it also explains the concept of test case dependency and its influence on the execution order, showcasing the use of 'depends on' attribute in testng annotations.", 'duration': 446.486, 'highlights': ['In TestNG, lower the priority number, highest is the priority. Zero is the highest priority number, which means that if I have given zero to D, that means D will run first.', 'Alphabetical ordering takes over prioritization, where the non-prioritized test cases follow an alphabetical execution order.', "Demonstrates the impact of test case dependency using the 'depends on' attribute in TestNG annotations, showcasing the influence on the execution order."]}, {'end': 6169.17, 'start': 5742.266, 'title': 'Test case dependency and disabling', 'summary': 'Explains how to disable test cases and use method dependency in testng, demonstrating through an example the dependencies and execution order of test cases, with a focus on prioritization and real-time application.', 'duration': 426.904, 'highlights': ['Demonstrating the use of method dependency in TestNG with an example', 'Explanation of disabling a test case in TestNG with two methods', 'Execution order of test cases based on dependency']}], 'duration': 989.742, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw5179428.jpg', 'highlights': ['In TestNG, lower the priority number, highest is the priority. Zero is the highest priority number, which means that if I have given zero to D, that means D will run first.', "The potential issue of using alphabetical ordering for test method execution is illustrated with an example of login functions 'login to Facebook' and 'open browser' executing in the incorrect order.", "Demonstrates the impact of test case dependency using the 'depends on' attribute in TestNG annotations, showcasing the influence on the execution order.", 'The natural ordering of test methods follows alphabetical order for function names and ascending order for numbers.', "Real-time function names such as 'invoke browser' and 'login to Facebook' highlight the practical implications of understanding and controlling test method execution order.", 'Demonstrating the use of method dependency in TestNG with an example', 'Alphabetical ordering takes over prioritization, where the non-prioritized test cases follow an alphabetical execution order.', 'Explanation of disabling a test case in TestNG with two methods', 'Execution order of test cases based on dependency']}, {'end': 8362.784, 'segs': [{'end': 6281.771, 'src': 'heatmap', 'start': 6171.251, 'weight': 1, 'content': [{'end': 6175.232, 'text': "And then disabling, I've already covered disable also.", 'start': 6171.251, 'duration': 3.981}, {'end': 6179.733, 'text': 'And this one is using always run.', 'start': 6176.512, 'duration': 3.221}, {'end': 6186.956, 'text': 'In TestNG, we can also choose to run a particular test irrespective of the fail pass condition of depending method.', 'start': 6180.454, 'duration': 6.502}, {'end': 6190.848, 'text': 'We can control that by setting the always run attribute.', 'start': 6187.586, 'duration': 3.262}, {'end': 6192.508, 'text': "So that's another attribute.", 'start': 6191.208, 'duration': 1.3}, {'end': 6195.97, 'text': "So if the question comes up for disabling, it's enabled.", 'start': 6192.849, 'duration': 3.121}, {'end': 6203.153, 'text': "but if you always want to run the test case, no matter test case you're dependent on is passed or it has failed,", 'start': 6195.97, 'duration': 7.183}, {'end': 6206.175, 'text': 'you just need to mention always run is equal to true.', 'start': 6203.153, 'duration': 3.022}, {'end': 6208.896, 'text': "okay?. Let's go to the next slide.", 'start': 6206.175, 'duration': 2.721}, {'end': 6213.078, 'text': 'This is disabling, so you can see enabled is equal to false.', 'start': 6209.537, 'duration': 3.541}, {'end': 6218.826, 'text': 'This test case will never execute, all right? Then comes your grouping.', 'start': 6213.598, 'duration': 5.228}, {'end': 6223.248, 'text': 'So grouping, assertion, parallel testing, and report generation.', 'start': 6219.466, 'duration': 3.782}, {'end': 6225.749, 'text': "So you haven't seen report as of now.", 'start': 6223.268, 'duration': 2.481}, {'end': 6232.473, 'text': "So I'll show you reports as well, okay? Just give me a second, I'll go back and show you the report.", 'start': 6226.71, 'duration': 5.763}, {'end': 6237.69, 'text': 'So what I want you to do is just refresh your project.', 'start': 6233.547, 'duration': 4.143}, {'end': 6243.114, 'text': 'okay?. Now, as soon as I refresh this project, can you see that this folder has come up?', 'start': 6237.69, 'duration': 5.424}, {'end': 6244.935, 'text': "Let's first just minimize this.", 'start': 6243.214, 'duration': 1.721}, {'end': 6249.158, 'text': 'This new folder has come up, test-output.', 'start': 6245.876, 'duration': 3.282}, {'end': 6253.701, 'text': 'This comes up because of testng, okay? Just open it.', 'start': 6249.698, 'duration': 4.003}, {'end': 6261.167, 'text': 'You will see there is an HTML file called emailable-report.', 'start': 6254.302, 'duration': 6.865}, {'end': 6262.948, 'text': 'Just double click on it.', 'start': 6261.787, 'duration': 1.161}, {'end': 6273.282, 'text': 'Can you see here? Now since I just ran only a small test script with just two functions, so this looks small to me.', 'start': 6263.632, 'duration': 9.65}, {'end': 6277.166, 'text': 'But just think about it in terms of a test read.', 'start': 6273.923, 'duration': 3.243}, {'end': 6281.771, 'text': 'How many headings do we have? Test how many passed, how many skipped?', 'start': 6277.727, 'duration': 4.044}], 'summary': 'Testng allows running specific tests with always run attribute, providing report generation', 'duration': 110.52, 'max_score': 6171.251, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw6171251.jpg'}, {'end': 6307.106, 'src': 'embed', 'start': 6277.727, 'weight': 0, 'content': [{'end': 6281.771, 'text': 'How many headings do we have? Test how many passed, how many skipped?', 'start': 6277.727, 'duration': 4.044}, {'end': 6282.612, 'text': 'how many failed?', 'start': 6281.771, 'duration': 0.841}, {'end': 6288.295, 'text': 'Time total time in milliseconds included groups excluded groups.', 'start': 6283.292, 'duration': 5.003}, {'end': 6291.577, 'text': 'These are the classes methods and start time.', 'start': 6288.935, 'duration': 2.642}, {'end': 6297.14, 'text': 'okay?. And you can see which class ran, which all functions ran, what was the start time?', 'start': 6291.577, 'duration': 5.563}, {'end': 6301.022, 'text': 'how many total milliseconds the test case took in execution?', 'start': 6297.14, 'duration': 3.882}, {'end': 6307.106, 'text': 'This entire report, this looks small here, but it looks beautiful when you run the entire test suite.', 'start': 6301.643, 'duration': 5.463}], 'summary': 'Test results include number of headings, passed, failed, and total execution time.', 'duration': 29.379, 'max_score': 6277.727, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw6277727.jpg'}, {'end': 6625.836, 'src': 'embed', 'start': 6598.703, 'weight': 5, 'content': [{'end': 6605.57, 'text': "Press Enter and just add it, all right? So now we've got the defined DTD for TestNG.", 'start': 6598.703, 'duration': 6.867}, {'end': 6610.255, 'text': "So here, if you now write group, you're getting this option.", 'start': 6606.03, 'duration': 4.225}, {'end': 6615.57, 'text': 'Defines additional groups and also which groups to include in this test run.', 'start': 6611.768, 'duration': 3.802}, {'end': 6621.634, 'text': 'Now when it comes to groups, groups is about including which group or excluding which group.', 'start': 6616.05, 'duration': 5.584}, {'end': 6624.095, 'text': 'And of course you want to run this group.', 'start': 6621.994, 'duration': 2.101}, {'end': 6625.836, 'text': "So that's the pattern.", 'start': 6624.495, 'duration': 1.341}], 'summary': 'Defined dtd for testng, includes/excludes groups for test run.', 'duration': 27.133, 'max_score': 6598.703, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw6598703.jpg'}, {'end': 7102.717, 'src': 'embed', 'start': 7020.317, 'weight': 6, 'content': [{'end': 7026.241, 'text': 'So what you have to do is just refresh this, expand it, and open emailable report.', 'start': 7020.317, 'duration': 5.924}, {'end': 7034.962, 'text': "Now can you see that? First of all, there's nothing like default, okay? Because we named our test case and we named our test suite as well.", 'start': 7026.681, 'duration': 8.281}, {'end': 7039.983, 'text': 'So testng is my suite name, test grouping is my test name.', 'start': 7035.623, 'duration': 4.36}, {'end': 7044.324, 'text': 'How many tests did we run? Just one as in test grouping.', 'start': 7040.463, 'duration': 3.861}, {'end': 7048.005, 'text': 'Five got passed, nothing skipped, nothing failed.', 'start': 7044.924, 'duration': 3.081}, {'end': 7058.609, 'text': "This is the total time, included groups B and D, and these are the results, okay? Every time you do something new, it'll get added to the report.", 'start': 7048.505, 'duration': 10.104}, {'end': 7062.411, 'text': 'Now with parameters, parameters will get added here.', 'start': 7059.049, 'duration': 3.362}, {'end': 7064.573, 'text': "Okay, let's close this.", 'start': 7062.431, 'duration': 2.142}, {'end': 7071.123, 'text': "Okay, we'll go back to the slide so we'll quickly see what is to be demonstrated here.", 'start': 7065.6, 'duration': 5.523}, {'end': 7075.845, 'text': "All right, we've got parallel left, assertions left, that's it.", 'start': 7071.583, 'duration': 4.262}, {'end': 7078.347, 'text': "Okay, let's understand assertions here.", 'start': 7076.326, 'duration': 2.021}, {'end': 7085.21, 'text': 'All right, assertion can be used in TestNG to compare the actual result with the expected result.', 'start': 7078.907, 'duration': 6.303}, {'end': 7089.593, 'text': 'Assert.assert equals string one and string two.', 'start': 7085.951, 'duration': 3.642}, {'end': 7093.115, 'text': "Assert.assert true, you're calling some method.", 'start': 7090.113, 'duration': 3.002}, {'end': 7097.756, 'text': "Now these are methods and you're asserting something.", 'start': 7094.095, 'duration': 3.661}, {'end': 7102.717, 'text': "In the first one, you're checking whether string one and two, they're equal or not.", 'start': 7098.236, 'duration': 4.481}], 'summary': 'Demonstration of running one test, with 5 passed, and explanation of using assertions in testng.', 'duration': 82.4, 'max_score': 7020.317, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw7020317.jpg'}, {'end': 7649.711, 'src': 'embed', 'start': 7624.568, 'weight': 3, 'content': [{'end': 7629.512, 'text': "It's just that you have to run test cases parallelly on different instances of your browser.", 'start': 7624.568, 'duration': 4.944}, {'end': 7635.277, 'text': "I'm not going to cover cross-browser testing here, guys, because this is a tutorial.", 'start': 7631.033, 'duration': 4.244}, {'end': 7642.684, 'text': "We cover a lot in live classes, so you've seen annotations, you've seen prioritization and these.", 'start': 7635.878, 'duration': 6.806}, {'end': 7649.711, 'text': "We've got a whole lot of stuff in TestNG that is covered in live classes, even in assertions, in grouping.", 'start': 7643.065, 'duration': 6.646}], 'summary': 'Tutorial covers running test cases parallelly on different browser instances in testng.', 'duration': 25.143, 'max_score': 7624.568, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw7624568.jpg'}, {'end': 7696.897, 'src': 'embed', 'start': 7673.281, 'weight': 10, 'content': [{'end': 7682.187, 'text': 'And you know there are instances where I mean in 95% cases people will ask you in an interview the difference between hard assert and soft assert.', 'start': 7673.281, 'duration': 8.906}, {'end': 7688.091, 'text': "Okay so I'm not talking about soft assertion using verify or having try catch block.", 'start': 7682.648, 'duration': 5.443}, {'end': 7692.694, 'text': "There's another class in TestNG which is called soft assert okay.", 'start': 7688.511, 'duration': 4.183}, {'end': 7696.897, 'text': 'So we do that demonstration using that class okay.', 'start': 7693.135, 'duration': 3.762}], 'summary': "In 95% of cases, people ask about hard assert vs. soft assert in interviews, but there's also a testng class for soft assert.", 'duration': 23.616, 'max_score': 7673.281, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw7673281.jpg'}, {'end': 7817.21, 'src': 'embed', 'start': 7771.732, 'weight': 4, 'content': [{'end': 7779.818, 'text': "So I'll just take this piece of code, Control-A, Control-C, close it, TestNG Parallel, Control-V.", 'start': 7771.732, 'duration': 8.086}, {'end': 7782.82, 'text': 'Now, how do you do parallel testing?', 'start': 7780.798, 'duration': 2.022}, {'end': 7790.146, 'text': "So we've got an attribute that has to be placed along with your test suite.", 'start': 7783.3, 'duration': 6.846}, {'end': 7794.65, 'text': "okay?. If you see here, as soon as I'll place equal to, you've got few options.", 'start': 7790.146, 'duration': 4.504}, {'end': 7797.753, 'text': 'False classes, instances, methods, and tests.', 'start': 7794.89, 'duration': 2.863}, {'end': 7801.436, 'text': 'So these are the options for running your test cases parallelly.', 'start': 7798.073, 'duration': 3.363}, {'end': 7803.898, 'text': 'You can run your classes parallelly.', 'start': 7801.936, 'duration': 1.962}, {'end': 7808.081, 'text': 'You can by default make it false so that parallel means false.', 'start': 7804.458, 'duration': 3.623}, {'end': 7810.143, 'text': "You don't want test cases to run parallelly.", 'start': 7808.182, 'duration': 1.961}, {'end': 7812.005, 'text': 'You can take instances.', 'start': 7810.704, 'duration': 1.301}, {'end': 7817.21, 'text': 'You can run your methods parallelly and you can run your tests parallelly.', 'start': 7812.686, 'duration': 4.524}], 'summary': 'Demonstrating parallel testing using testng with options for running test cases parallelly: classes, instances, methods, and tests.', 'duration': 45.478, 'max_score': 7771.732, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw7771732.jpg'}, {'end': 8103.216, 'src': 'embed', 'start': 8078.62, 'weight': 7, 'content': [{'end': 8087.563, 'text': "how many failed, what was the total time, and if you have groups and if you've got parameters, that will also come up within this report.", 'start': 8078.62, 'duration': 8.943}, {'end': 8096.387, 'text': "Now there's a whole lot of stuff to parallel which I want to cover one more scenario, scenario as in how you can twist this XML.", 'start': 8088.564, 'duration': 7.823}, {'end': 8099.834, 'text': 'you were using parallel is equal to tests.', 'start': 8097.333, 'duration': 2.501}, {'end': 8103.216, 'text': "Let's say I want to use parallel is equal to classes.", 'start': 8100.095, 'duration': 3.121}], 'summary': 'Report includes failed count, total time, and options for parallel execution.', 'duration': 24.596, 'max_score': 8078.62, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw8078620.jpg'}, {'end': 8337.764, 'src': 'embed', 'start': 8309.117, 'weight': 12, 'content': [{'end': 8315.739, 'text': 'All the instructors on Edureka they have got there a whole lot of industry experience in their field.', 'start': 8309.117, 'duration': 6.622}, {'end': 8323.601, 'text': "So if I'm teaching WebDriver, if I'm teaching TestNGs, I've been chosen to give this tutorial because I've got this experience,", 'start': 8316.079, 'duration': 7.522}, {'end': 8325.222, 'text': "I've got this industry experience.", 'start': 8323.601, 'duration': 1.621}, {'end': 8330.683, 'text': 'And we talk about expected scenarios, industry scenarios, we talk about everything.', 'start': 8325.742, 'duration': 4.941}, {'end': 8337.764, 'text': "We've got live questionnaire as in student can ask questions live and it'll be demonstrated live in the online class.", 'start': 8330.743, 'duration': 7.021}], 'summary': 'Edureka instructors have extensive industry experience, offering live demonstrations and q&a during online classes.', 'duration': 28.647, 'max_score': 8309.117, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw8309117.jpg'}], 'start': 6171.251, 'title': 'Testng features, grouping, assertions, and parallel testing', 'summary': 'Covers testng features such as always run attribute, enabling/disabling test cases, and report generation, grouping test cases, configuring testng.xml file, understanding assertions, and parallel testing with practical examples and industry insights.', 'chapters': [{'end': 6320.696, 'start': 6171.251, 'title': 'Testng features and report generation', 'summary': 'Discusses testng features such as always run attribute, enabling/disabling test cases, and report generation, including details of the generated report and its contents.', 'duration': 149.445, 'highlights': ['The generated report includes details such as total number of tests, passed tests, skipped tests, failed tests, total execution time, classes and methods, and start time, providing comprehensive insights into test execution.', 'The always run attribute in TestNG allows running a particular test irrespective of the pass or fail condition of depending methods by setting always run attribute as true, providing flexibility in test execution.', 'Enabling/disabling test cases in TestNG can be achieved by setting enabled attribute to true/false, allowing control over test case execution based on requirements.']}, {'end': 7075.845, 'start': 6321.257, 'title': 'Testng grouping and configuration', 'summary': 'Covers the concept of grouping test cases in testng, demonstrating how to create and include groups in test cases, as well as the configuration of testng.xml file and running test suites with specified groups, resulting in the display of test results in an emailable report.', 'duration': 754.588, 'highlights': ['Demonstrating how to include groups in test cases and configure the testng.xml file', 'Running test suites with specified groups and displaying test results in an emailable report', 'Explaining the process of adding parameters to the emailable report']}, {'end': 7602.781, 'start': 7076.326, 'title': 'Understanding testng assertions', 'summary': 'Explains how to use assertions in testng to compare actual and expected results, including examples of assert methods and their impact on test execution.', 'duration': 526.455, 'highlights': ['The chapter explains how to use assertions in TestNG to compare actual and expected results', 'Examples of assert methods and their impact on test execution are demonstrated', 'Demonstration of using assertions for comparing strings and invoking functions']}, {'end': 7975.723, 'start': 7604.491, 'title': 'Understanding parallel testing in testng', 'summary': 'Explains parallel testing in testng, covering topics like cross-browser testing, running test cases parallelly on different browsers, and different instances of browsers using testng attributes for parallel testing, and demonstrates running test cases parallelly using testng xml, with a focus on running tests parallelly and resolving parser exceptions.', 'duration': 371.232, 'highlights': ['The chapter explains parallel testing in TestNG, covering topics like cross-browser testing, running test cases parallelly on different browsers, and different instances of browsers using TestNG attributes for parallel testing.', 'The chapter demonstrates running test cases parallelly using TestNG XML, with a focus on running tests parallelly and resolving parser exceptions.', 'The chapter covers TestNG attributes for parallel testing, such as false classes, instances, methods, and tests, providing options for running test cases parallelly.']}, {'end': 8362.784, 'start': 7976.584, 'title': 'Parallel testing with testng', 'summary': 'Discusses running test cases parallelly using testng, covering the concepts of parallel execution, report generation, and xml configuration with practical examples and industry insights.', 'duration': 386.2, 'highlights': ['The report includes the number of test cases passed and failed, total time taken, and additional information such as groups and parameters.', 'Different parallel execution options such as running tests, classes, methods, and instances are explained, offering flexibility in parallel test execution.', 'Practical demonstration and configuration examples for parallel execution using XML, showcasing the implementation of parallel testing in real scenarios.', 'Instructors with industry experience provide insights and practical demonstrations, addressing feedback and introducing new topics related to Selenium WebDriver.']}], 'duration': 2191.533, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_sWcXaic-bw/pics/_sWcXaic-bw6171251.jpg', 'highlights': ['The generated report includes details such as total number of tests, passed tests, skipped tests, failed tests, total execution time, classes and methods, and start time, providing comprehensive insights into test execution.', 'The always run attribute in TestNG allows running a particular test irrespective of the pass or fail condition of depending methods by setting always run attribute as true, providing flexibility in test execution.', 'Enabling/disabling test cases in TestNG can be achieved by setting enabled attribute to true/false, allowing control over test case execution based on requirements.', 'The chapter explains parallel testing in TestNG, covering topics like cross-browser testing, running test cases parallelly on different browsers, and different instances of browsers using TestNG attributes for parallel testing.', 'Different parallel execution options such as running tests, classes, methods, and instances are explained, offering flexibility in parallel test execution.', 'Demonstrating how to include groups in test cases and configure the testng.xml file', 'The chapter explains how to use assertions in TestNG to compare actual and expected results', 'Practical demonstration and configuration examples for parallel execution using XML, showcasing the implementation of parallel testing in real scenarios.', 'Running test suites with specified groups and displaying test results in an emailable report', 'The report includes the number of test cases passed and failed, total time taken, and additional information such as groups and parameters.', 'Examples of assert methods and their impact on test execution are demonstrated', 'Explaining the process of adding parameters to the emailable report', 'Instructors with industry experience provide insights and practical demonstrations, addressing feedback and introducing new topics related to Selenium WebDriver.', 'The chapter demonstrates running test cases parallelly using TestNG XML, with a focus on running tests parallelly and resolving parser exceptions.', 'The chapter covers TestNG attributes for parallel testing, such as false classes, instances, methods, and tests, providing options for running test cases parallelly.']}], 'highlights': ['TestNG offers flexibility with annotations like @BeforeTest, @AfterTest, @BeforeMethod, @AfterMethod.', 'TestNG supports parameterization in two ways, with parameters allowing sending only one value at a time and data provider enabling data-driven testing for running test cases with multiple sets of data.', 'The generated report includes details such as total number of tests, passed tests, skipped tests, failed tests, total execution time, classes and methods, and start time, providing comprehensive insights into test execution.', 'Sikuli uses image recognition techniques to test images visible on screen and then performs operations on those images, enabling web testing and image testing.', 'TestNG enables parallel testing by running test cases parallelly on the same kind of browser or different browsers, and supports cross-browser testing.']}