gitextract_p7fzfj5_/ ├── .gitignore ├── README.md ├── code.md ├── html-basics/ │ ├── 1-first-html.html │ ├── 2-second-html.html │ ├── 3-tables.html │ ├── 4-miscellaneous.html │ ├── 5-nesting-and-more.html │ ├── 6-form.html │ ├── 7-form-with-css.html │ ├── 8-form-with-external-css.html │ ├── 9-id-and-class.html │ └── style.css ├── java-selenium-code.md ├── junit-basics/ │ ├── pom.xml │ └── src/ │ └── test/ │ └── java/ │ └── com/ │ ├── example/ │ │ └── tests/ │ │ ├── FacebookLogin.java │ │ ├── FacebookLoginDummy.java │ │ └── GoogleSearchForIn28minutes.java │ └── in28minutes/ │ └── tests/ │ ├── FirstJUnitTest.java │ └── FirstSeleniumJUnitTest.java ├── selenium-ide/ │ ├── FirstKatalonStudioProject.html │ ├── FirstKatalonStudioProject_files/ │ │ └── css │ └── FirstSeleniumIDEProject.side ├── testng-basics/ │ ├── pom.xml │ ├── src/ │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ ├── example/ │ │ │ └── tests/ │ │ │ ├── FacebookLogin.java │ │ │ └── GoogleSearchForIn28minutes.java │ │ └── in28minutes/ │ │ └── test/ │ │ └── testng/ │ │ ├── FirstSeleniumTestNgTest.java │ │ ├── FirstTestngTest.java │ │ └── MultipleBrowserTest.java │ └── testng.xml ├── todo-web-application/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── in28minutes/ │ │ │ └── springboot/ │ │ │ └── web/ │ │ │ ├── SpringBootFirstWebApplication.java │ │ │ ├── controller/ │ │ │ │ ├── ErrorController.java │ │ │ │ ├── FileUploadController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── LogoutController.java │ │ │ │ ├── TodoController.java │ │ │ │ └── WelcomeController.java │ │ │ ├── model/ │ │ │ │ └── Todo.java │ │ │ └── service/ │ │ │ ├── LoginService.java │ │ │ ├── TodoRepository.java │ │ │ └── TodoService.java │ │ ├── resources/ │ │ │ ├── application.properties │ │ │ ├── data.sql │ │ │ └── static/ │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── data/ │ │ │ │ ├── flot-data.js │ │ │ │ └── morris-data.js │ │ │ ├── dist/ │ │ │ │ ├── css/ │ │ │ │ │ └── sb-admin-2.css │ │ │ │ └── js/ │ │ │ │ └── sb-admin-2.js │ │ │ ├── gulpfile.js │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ └── sb-admin-2.js │ │ │ ├── less/ │ │ │ │ ├── mixins.less │ │ │ │ ├── sb-admin-2.less │ │ │ │ └── variables.less │ │ │ ├── package.json │ │ │ ├── pages/ │ │ │ │ ├── blank.html │ │ │ │ ├── buttons.html │ │ │ │ ├── file-upload.html │ │ │ │ ├── flot.html │ │ │ │ ├── forms.html │ │ │ │ ├── frames-example-left.html │ │ │ │ ├── frames-example-right.html │ │ │ │ ├── frames-example.html │ │ │ │ ├── grid.html │ │ │ │ ├── icons.html │ │ │ │ ├── index.html │ │ │ │ ├── login.html │ │ │ │ ├── morris.html │ │ │ │ ├── notifications.html │ │ │ │ ├── panels-wells.html │ │ │ │ ├── sortable.html │ │ │ │ ├── tables.html │ │ │ │ └── typography.html │ │ │ └── vendor/ │ │ │ ├── bootstrap/ │ │ │ │ ├── css/ │ │ │ │ │ └── bootstrap.css │ │ │ │ └── js/ │ │ │ │ └── bootstrap.js │ │ │ ├── bootstrap-social/ │ │ │ │ ├── bootstrap-social.css │ │ │ │ ├── bootstrap-social.less │ │ │ │ └── bootstrap-social.scss │ │ │ ├── datatables/ │ │ │ │ ├── css/ │ │ │ │ │ ├── dataTables.bootstrap.css │ │ │ │ │ ├── dataTables.bootstrap4.css │ │ │ │ │ ├── dataTables.foundation.css │ │ │ │ │ ├── dataTables.jqueryui.css │ │ │ │ │ ├── dataTables.material.css │ │ │ │ │ ├── dataTables.semanticui.css │ │ │ │ │ ├── dataTables.uikit.css │ │ │ │ │ ├── jquery.dataTables.css │ │ │ │ │ └── jquery.dataTables_themeroller.css │ │ │ │ ├── images/ │ │ │ │ │ └── Sorting icons.psd │ │ │ │ └── js/ │ │ │ │ ├── dataTables.bootstrap.js │ │ │ │ ├── dataTables.bootstrap4.js │ │ │ │ ├── dataTables.foundation.js │ │ │ │ ├── dataTables.jqueryui.js │ │ │ │ ├── dataTables.material.js │ │ │ │ ├── dataTables.semanticui.js │ │ │ │ ├── dataTables.uikit.js │ │ │ │ ├── jquery.dataTables.js │ │ │ │ └── jquery.js │ │ │ ├── datatables-plugins/ │ │ │ │ ├── dataTables.bootstrap.css │ │ │ │ ├── dataTables.bootstrap.js │ │ │ │ └── index.html │ │ │ ├── datatables-responsive/ │ │ │ │ ├── dataTables.responsive.css │ │ │ │ ├── dataTables.responsive.js │ │ │ │ └── dataTables.responsive.scss │ │ │ ├── flot/ │ │ │ │ ├── excanvas.js │ │ │ │ ├── jquery.colorhelpers.js │ │ │ │ ├── jquery.flot.canvas.js │ │ │ │ ├── jquery.flot.categories.js │ │ │ │ ├── jquery.flot.crosshair.js │ │ │ │ ├── jquery.flot.errorbars.js │ │ │ │ ├── jquery.flot.fillbetween.js │ │ │ │ ├── jquery.flot.image.js │ │ │ │ ├── jquery.flot.js │ │ │ │ ├── jquery.flot.navigate.js │ │ │ │ ├── jquery.flot.pie.js │ │ │ │ ├── jquery.flot.resize.js │ │ │ │ ├── jquery.flot.selection.js │ │ │ │ ├── jquery.flot.stack.js │ │ │ │ ├── jquery.flot.symbol.js │ │ │ │ ├── jquery.flot.threshold.js │ │ │ │ ├── jquery.flot.time.js │ │ │ │ └── jquery.js │ │ │ ├── flot-tooltip/ │ │ │ │ ├── jquery.flot.tooltip.js │ │ │ │ └── jquery.flot.tooltip.source.js │ │ │ ├── font-awesome/ │ │ │ │ ├── HELP-US-OUT.txt │ │ │ │ ├── css/ │ │ │ │ │ └── font-awesome.css │ │ │ │ ├── fonts/ │ │ │ │ │ └── FontAwesome.otf │ │ │ │ ├── less/ │ │ │ │ │ ├── animated.less │ │ │ │ │ ├── bordered-pulled.less │ │ │ │ │ ├── core.less │ │ │ │ │ ├── extras.less │ │ │ │ │ ├── fixed-width.less │ │ │ │ │ ├── font-awesome.less │ │ │ │ │ ├── icons.less │ │ │ │ │ ├── larger.less │ │ │ │ │ ├── list.less │ │ │ │ │ ├── mixins.less │ │ │ │ │ ├── path.less │ │ │ │ │ ├── rotated-flipped.less │ │ │ │ │ ├── screen-reader.less │ │ │ │ │ ├── spinning.less │ │ │ │ │ ├── stacked.less │ │ │ │ │ └── variables.less │ │ │ │ └── scss/ │ │ │ │ ├── _animated.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _extras.scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _screen-reader.scss │ │ │ │ ├── _spinning.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── font-awesome.scss │ │ │ ├── jquery/ │ │ │ │ └── jquery.js │ │ │ ├── metisMenu/ │ │ │ │ ├── metisMenu.css │ │ │ │ └── metisMenu.js │ │ │ ├── morrisjs/ │ │ │ │ ├── morris.css │ │ │ │ └── morris.js │ │ │ └── raphael/ │ │ │ └── raphael.js │ │ └── webapp/ │ │ └── WEB-INF/ │ │ └── jsp/ │ │ ├── common/ │ │ │ ├── footer.jspf │ │ │ ├── header.jspf │ │ │ └── navigation.jspf │ │ ├── error.jsp │ │ ├── file-upload-successful.jsp │ │ ├── list-todos.jsp │ │ ├── login.jsp │ │ ├── todo.jsp │ │ └── welcome.jsp │ └── test/ │ └── java/ │ └── com/ │ └── in28minutes/ │ └── springboot/ │ └── web/ │ └── SpringBootFirstWebApplicationTests.java ├── web-driver-1-basics/ │ ├── pom.xml │ └── src/ │ └── test/ │ └── java/ │ └── com/ │ └── in28minutes/ │ └── webdriver/ │ ├── basics/ │ │ ├── AbstractChromeWebDriverTest.java │ │ ├── WebDriverBasicsLocatorsPerformanceTest.java │ │ ├── WebDriverBasicsLocatorsWithCSSSelectorTest.java │ │ ├── WebDriverBasicsLocatorsWithClassTest.java │ │ ├── WebDriverBasicsLocatorsWithIdTest.java │ │ ├── WebDriverBasicsLocatorsWithLinkTextTest.java │ │ ├── WebDriverBasicsLocatorsWithNameTest.java │ │ ├── WebDriverBasicsLocatorsWithTagTest.java │ │ ├── WebDriverBasicsLocatorsWithXPathSelectorTest.java │ │ └── form/ │ │ ├── FormElementCheckBoxTest.java │ │ ├── FormElementRadioButtonTest.java │ │ ├── FormElementSelectTest.java │ │ └── FormElementTextTest.java │ └── login/ │ ├── FirstWebApplicationLoginTest.java │ └── StaticLoginTest.java ├── web-driver-2-more-scenarios/ │ ├── pom.xml │ ├── src/ │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── in28minutes/ │ │ └── webdriver/ │ │ ├── basics/ │ │ │ └── AbstractChromeWebDriverTest.java │ │ └── scenarios/ │ │ ├── ActionsBasicTest.java │ │ ├── CheckElementStylesTest.java │ │ ├── FramesTest.java │ │ ├── JavaScriptAlertTest.java │ │ ├── NewWindowTest.java │ │ ├── PlayingWithModalWindowAndWaitsTest.java │ │ ├── PlayingWithScreenWindowTest.java │ │ ├── ReadTablesTest.java │ │ ├── RunJavaScriptTest.java │ │ ├── TakesScreenshotTest.java │ │ └── framework/ │ │ └── TableReader.java │ └── testng.xml ├── web-driver-3-cross-browser-framework/ │ ├── pom.xml │ ├── src/ │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── in28minutes/ │ │ └── selenium/ │ │ └── crossbrowser/ │ │ ├── CrossBrowserBasicsTest.java │ │ ├── HeadlessBrowserBasicsTest.java │ │ └── framework/ │ │ └── CrossBrowserFrameworkTest.java │ └── testng.xml ├── web-driver-4-data-driven-tests/ │ ├── pom.xml │ └── src/ │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── in28minutes/ │ │ └── datadriventests/ │ │ ├── ExcelReadUtil.java │ │ ├── LoginDataProviderCompleteCSVTest.java │ │ ├── LoginDataProviderCompleteExcelTest.java │ │ ├── LoginDataProviderCompleteTest.java │ │ ├── SuccessfulLoginBasicTest.java │ │ ├── UnSuccessfulLoginBasicTest.java │ │ ├── UnSuccessfulLoginDataDrivenBasicTest.java │ │ └── UnSuccessfulLoginDataDrivenLevel1Test.java │ └── resources/ │ ├── login-data.csv │ └── login-data.xlsx ├── web-driver-5-page-object-model/ │ ├── pom.xml │ └── src/ │ └── test/ │ └── java/ │ └── com/ │ └── in28minutes/ │ └── pageobjects/ │ └── updatetodo/ │ ├── ListTodoPage.java │ ├── LoginPage.java │ ├── TodoPage.java │ ├── UpdateTodoBasicTest.java │ ├── UpdateTodoBasicTest1BeforePageObjects.java │ ├── UpdateTodoBasicTest2AfterLoginPage.java │ ├── UpdateTodoBasicTest3AfterListTodoPage.java │ ├── UpdateTodoBasicTest5AfterExercises.java │ └── WelcomePage.java └── web-driver-6-stand-alone-and-grid/ ├── pom.xml └── src/ └── test/ └── java/ └── com/ └── in28minutes/ ├── SeleniumHubTest.java └── SeleniumStandAloneTest.java