Skip to content
Permalink
Browse files
updated test subject to koa
  • Loading branch information
aa7401 committed Nov 6, 2018
1 parent a4d50a1 commit 34ac116b2d3f1f11f4beb8439ce1195e48b2c426
Show file tree
Hide file tree
Showing 11 changed files with 4,838 additions and 4,051 deletions.
@@ -59,10 +59,11 @@
"yoda": 2
},
"overrides": [{
"files": [ "*.test.js" ],
"files": [ "*.test.js", "*.spec.js" ],
"rules": {
"max-lines-per-function": "off",
"max-lines": "off",
"max-statements": "off",
"no-magic-numbers": "off"
}
}]
@@ -2,51 +2,61 @@

'use strict'

const express = require('express')
const chalk = require('chalk')

const handlebars = require('express-handlebars').create({defaultLayout: 'main'})
const bodyParser = require('body-parser')
const app = express()
app.use(express.static('public'))
app.use(bodyParser.urlencoded({ extended: true }))
const Koa = require('koa')
const Router = require('koa-router')
const bodyParser = require('koa-bodyparser')
const views = require('koa-views')

const app = new Koa()
app.use(bodyParser())
app.use(require('koa-static')('public'))

app.use(views(`${__dirname}/views`, { extension: 'handlebars' }, {
map: {
handlebars: 'handlebars'
}
}))

app.engine('handlebars', handlebars.engine)
app.set('view engine', 'handlebars')
const router = new Router()

const port = 8080

const todo = require('./modules/todo')

app.get('/', (req, res) => {
router.get('/', async ctx => {
try {
const data = todo.getAll()
res.render('home', {items: data})
await ctx.render('home', {items: data})
} catch(err) {
console.error(err.message)
res.render('empty')
await ctx.render('empty')
}
})

app.post('/', (req, res) => {
router.post('/', async ctx => {
try {
todo.add(req.body.item, req.body.qty)
console.log(ctx.request.body)
todo.add(ctx.request.body.item, ctx.request.body.qty)
} catch(err) {
console.error(err.message)
} finally {
res.redirect('/')
ctx.redirect('/')
}
})

app.get('/delete/:key', (req, res) => {
router.get('/delete/:index', async ctx => {
try {
console.log(`key: ${req.params.key}`)
todo.delete(req.params.key)
console.log(`item: ${ctx.params.index}`)
todo.delete(ctx.params.index)
} catch(err) {
console.error(err.message)
} finally {
res.redirect('/')
ctx.redirect('/')
}
})

app.listen(port, () => console.log(chalk.green(`app listening on port ${port}`)))
app.use(router.routes())
app.use(router.allowedMethods())
const server = app.listen(port)

module.exports = server
@@ -1,21 +1,9 @@

'use strict'

module.exports = {
server: {
command: 'node index.js',
port: 8080,
launchTimeout: 10000,
debug: true
}
server: {
command: 'node index.js',
port: 8080,
}
}

// module.exports = {
// server: {
// command: 'node index.js',
// port: 8080
// },
// launch: {
// headless: true,
// devtools: true,
// timeout:30000
// }
// }
@@ -20,12 +20,18 @@
"devDependencies": {
"faker": "^4.1.0",
"jest": "^22.4.4",
"puppeteer": "^1.0.0"
"puppeteer": "^1.10.0"
},
"dependencies": {
"chalk": "^2.4.1",
"express": "^4.16.4",
"express-handlebars": "^3.0.0"
"express-handlebars": "^3.0.0",
"handlebars": "^4.0.12",
"koa": "^2.6.1",
"koa-bodyparser": "^4.2.1",
"koa-router": "^7.4.0",
"koa-static": "^5.0.0",
"koa-views": "^6.1.4"
},
"jest": {
"verbose": true,
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -5,54 +5,54 @@ const faker = require('faker')
const puppeteer = require('puppeteer')

const lead = {
name: faker.name.firstName(),
email: faker.internet.email(),
phone: faker.phone.phoneNumber(),
message: faker.random.words()
name: faker.name.firstName(),
email: faker.internet.email(),
phone: faker.phone.phoneNumber(),
message: faker.random.words()
}

let page
let browser
const width = 800
const height = 600

beforeAll(async () => {
browser = await puppeteer.launch({
headless: true,
slowMo: 40,
args: [`--window-size=${width},${height}`]
})
page = await browser.newPage()
await page.setViewport({ width, height })
beforeAll( async() => {
browser = await puppeteer.launch({
headless: true,
slowMo: 40,
args: [`--window-size=${width},${height}`, '--disable-http2']
})
page = await browser.newPage()
await page.setViewport({ width, height })
})

// afterAll(() => {
// browser.close()
// })

describe("Contact form", () => {
test('can add a single item', async done => {
await page.waitFor(1000)
await page.tracing.start({path: 'trace.json',screenshots:true})
await page.goto('http://0.0.0.0:8080/', { waitUntil: 'domcontentloaded' })
await page.waitForSelector("input[name=item]")
await page.click('input[name=item]')
await page.type('input[name=item]', 'bread')
await page.click('input[name=qty]')
await page.type('input[name=qty]', '42')
await page.click('input[type=submit]')
await page.waitFor(1000)
await page.screenshot({ path: "page.png" })
const title = await page.title()
expect(title).toBe('ToDo List')
const data = await page.evaluate(() => {
const tds = Array.from(document.querySelectorAll('table tr td:first-child'))
return tds.map(td => td.innerHTML)
})
console.log(data)
expect(data.length).toBe(1)
await page.tracing.stop()
await browser.close()
done()
}, 16000)
describe('Shopping List', () => {
test('can add a single item', async done => {
await page.waitFor(1000)
await page.tracing.start({path: 'trace.json',screenshots: true})
await page.goto('http://localhost:8080/', { waitUntil: 'domcontentloaded' })
await page.waitForSelector('input[name=item]')
await page.click('input[name=item]')
await page.type('input[name=item]', 'bread')
await page.click('input[name=qty]')
await page.type('input[name=qty]', '42')
await page.click('input[type=submit]')
await page.waitFor(1000)
await page.screenshot({ path: 'screenshots/page.png' })
const title = await page.title()
expect(title).toBe('ToDo List')
const data = await page.evaluate(() => {
const tds = Array.from(document.querySelectorAll('table tr td:first-child'))
return tds.map(td => td.innerHTML)
})
console.log(data)
expect(data.length).toBe(1)
await page.tracing.stop()
await browser.close()
done()
}, 16000)
})

0 comments on commit 34ac116

Please sign in to comment.