Add playwright test
This commit is contained in:
		
							parent
							
								
									6ade503338
								
							
						
					
					
						commit
						d37fd6a0ba
					
				
					 3 changed files with 45 additions and 16 deletions
				
			
		
							
								
								
									
										2
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								index.js
									
										
									
									
									
								
							|  | @ -19,7 +19,7 @@ async function sortHackerNewsArticles() { | |||
|     let datespans = await page.locator(".age").all(); | ||||
| 
 | ||||
|     // iterate through date spans to get timestamps
 | ||||
|     for (row = 0; row < datespans.length; row++) { | ||||
|     for (var row = 0; row < datespans.length; row++) { | ||||
|       // turn timestamp strings into date objects and push to array
 | ||||
|       datestamps.push(new Date(await datespans[row].getAttribute("title"))); | ||||
|     } | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| // @ts-check
 | ||||
| const { defineConfig, devices } = require('@playwright/test'); | ||||
| const { defineConfig, devices } = require("@playwright/test"); | ||||
| 
 | ||||
| /** | ||||
|  * Read environment variables from file. | ||||
|  | @ -11,7 +11,7 @@ const { defineConfig, devices } = require('@playwright/test'); | |||
|  * @see https://playwright.dev/docs/test-configuration
 | ||||
|  */ | ||||
| module.exports = defineConfig({ | ||||
|   testDir: './tests', | ||||
|   testDir: "./tests", | ||||
|   /* Run tests in files in parallel */ | ||||
|   fullyParallel: true, | ||||
|   /* Fail the build on CI if you accidentally left test.only in the source code. */ | ||||
|  | @ -21,32 +21,32 @@ module.exports = defineConfig({ | |||
|   /* Opt out of parallel tests on CI. */ | ||||
|   workers: process.env.CI ? 1 : undefined, | ||||
|   /* Reporter to use. See https://playwright.dev/docs/test-reporters */ | ||||
|   reporter: 'html', | ||||
|   reporter: "html", | ||||
|   /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ | ||||
|   use: { | ||||
|     /* Base URL to use in actions like `await page.goto('/')`. */ | ||||
|     // baseURL: 'http://127.0.0.1:3000',
 | ||||
| 
 | ||||
|     /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ | ||||
|     trace: 'on-first-retry', | ||||
|     trace: "on-first-retry", | ||||
|   }, | ||||
| 
 | ||||
|   /* Configure projects for major browsers */ | ||||
|   projects: [ | ||||
|     { | ||||
|       name: 'chromium', | ||||
|       use: { ...devices['Desktop Chrome'] }, | ||||
|       name: "chromium", | ||||
|       use: { ...devices["Desktop Chrome"], headless: false }, | ||||
|     }, | ||||
| 
 | ||||
|     { | ||||
|       name: 'firefox', | ||||
|       use: { ...devices['Desktop Firefox'] }, | ||||
|     }, | ||||
|     // {
 | ||||
|     //   name: 'firefox',
 | ||||
|     //   use: { ...devices['Desktop Firefox'] },
 | ||||
|     // },
 | ||||
| 
 | ||||
|     { | ||||
|       name: 'webkit', | ||||
|       use: { ...devices['Desktop Safari'] }, | ||||
|     }, | ||||
|     // {
 | ||||
|     //   name: 'webkit',
 | ||||
|     //   use: { ...devices['Desktop Safari'] },
 | ||||
|     // },
 | ||||
| 
 | ||||
|     /* Test against mobile viewports. */ | ||||
|     // {
 | ||||
|  | @ -76,4 +76,3 @@ module.exports = defineConfig({ | |||
|   //   reuseExistingServer: !process.env.CI,
 | ||||
|   // },
 | ||||
| }); | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										30
									
								
								tests/sort.spec.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								tests/sort.spec.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| const { expect, test } = require("playwright/test"); | ||||
| 
 | ||||
| test("First 100 articles sorted", async ({ page }) => { | ||||
|   // go to Hacker News
 | ||||
|   await page.goto("https://news.ycombinator.com/newest"); | ||||
| 
 | ||||
|   // instantiate empty array for all date objects
 | ||||
|   let datestamps = []; | ||||
| 
 | ||||
|   // loop through process per page
 | ||||
|   for (var pageview = 0; pageview <= 3; pageview++) { | ||||
|     // locate each article's age span
 | ||||
|     let datespans = await page.locator(".age").all(); | ||||
| 
 | ||||
|     // iterate through date spans to get timestamps
 | ||||
|     for (var row = 0; row < datespans.length; row++) { | ||||
|       // turn timestamp strings into date objects and push to array
 | ||||
|       datestamps.push(new Date(await datespans[row].getAttribute("title"))); | ||||
|     } | ||||
| 
 | ||||
|     // click the next button as needed
 | ||||
|     await page.getByRole("link", { name: "More", exact: true }).click(); | ||||
|   } | ||||
| 
 | ||||
|   // drop extra array elements
 | ||||
|   datestamps.splice(100, 20); | ||||
| 
 | ||||
|   // Expect match
 | ||||
|   await expect(datestamps === datestamps.sort()).toBeTruthy; | ||||
| }); | ||||
		Loading…
	
	Add table
		
		Reference in a new issue