index.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. var path = require('path')
  2. var http = require('http')
  3. var puppeteer = require('puppeteer')
  4. var options = {
  5. headless: false,
  6. // slowMo: 300,
  7. args: [
  8. `--disable-extensions-except=${path.resolve(__dirname, '../')}`,
  9. `--load-extension=${path.resolve(__dirname, '../')}`,
  10. ],
  11. }
  12. var tests = [
  13. 'popup-defaults',
  14. 'advanced-defaults',
  15. 'advanced-origins',
  16. 'popup-options',
  17. ]
  18. describe('markdown-viewer', () => {
  19. var browser, server
  20. it('test suite', async () => {
  21. browser = await puppeteer.launch(options)
  22. var page = await browser.newPage()
  23. await page.goto('chrome://extensions')
  24. await page.waitForSelector('.extension-id')
  25. var id = await page.evaluate(() =>
  26. document.querySelector('.extension-id').innerText.trim()
  27. )
  28. var popup = await browser.newPage()
  29. await popup.goto(`chrome-extension://${id}/content/popup.html`)
  30. var advanced = await browser.newPage()
  31. await advanced.goto(`chrome-extension://${id}/content/options.html`)
  32. await new Promise((resolve, reject) => {
  33. server = http.createServer()
  34. server.on('request', (req, res) => {
  35. if (/wrong-content-type/.test(req.url)) {
  36. res.setHeader('Content-Type', 'text/plain')
  37. res.end('**bold**')
  38. }
  39. else if (/correct-content-type/.test(req.url)) {
  40. res.setHeader('Content-Type', 'text/markdown')
  41. res.end('**bold**')
  42. }
  43. else if (/correct-content-type-variation/.test(req.url)) {
  44. res.setHeader('Content-Type', 'text/x-markdown')
  45. res.end('**bold**')
  46. }
  47. else if (/compiler-options-marked/.test(req.url)) {
  48. res.setHeader('Content-Type', 'text/x-markdown')
  49. res.end('~~strikethrough~~')
  50. }
  51. else if (/compiler-options-remark/.test(req.url)) {
  52. res.setHeader('Content-Type', 'text/x-markdown')
  53. res.end('- [ ] task')
  54. }
  55. })
  56. server.listen(3000, resolve)
  57. })
  58. tests.forEach((file) => {
  59. describe(file, () => {
  60. require(`./${file}.js`)({puppeteer, browser, popup, advanced})
  61. })
  62. })
  63. after(async () => {
  64. server.close()
  65. await browser.close()
  66. })
  67. })
  68. })