helpers.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. const os = require('os')
  2. const path = require('path')
  3. const p = require('playwright')
  4. const electron = p._electron
  5. const { expect } = require('@playwright/test')
  6. async function openAtom(profilePath, videoName) {
  7. const env = process.env
  8. env.ATOM_HOME = path.join("tmp", profilePath)
  9. const config = {
  10. args: ["--no-sandbox", "."],
  11. cwd: ".",
  12. env: env,
  13. timeout: 50000
  14. }
  15. if(env.BINARY_NAME) {
  16. config.executablePath = env.BINARY_NAME
  17. config.args = ["--no-sandbox"]
  18. }
  19. if(process.env.CI) {
  20. config.recordVideo = {
  21. dir: path.join('tests', 'videos', videoName)
  22. }
  23. }
  24. const app = await electron.launch(config)
  25. const page = await app.firstWindow()
  26. await expect(page.locator('.tab-bar').first()).toBeVisible()
  27. return {app, page}
  28. }
  29. async function runCommand({page}, command) {
  30. if(os.platform() === 'darwin') {
  31. await page.locator('atom-workspace').press('Meta+Shift+p')
  32. } else {
  33. await page.locator('atom-workspace').press('Control+Shift+p')
  34. }
  35. await expect(page.locator('atom-panel.modal:visible')).toBeVisible()
  36. const palette = page.locator('.command-palette atom-text-editor.is-focused')
  37. await palette.type(command)
  38. await page.locator('.selected div', { hasText: command }).first().click()
  39. await expect(page.locator('.modal:visible')).toBeHidden()
  40. }
  41. async function typeInEditor({page}, locator, text) {
  42. const editor = page.locator(`${locator} atom-text-editor.is-focused`)
  43. await expect(editor).toBeVisible()
  44. await editor.type(text)
  45. }
  46. module.exports = {
  47. openAtom,
  48. runCommand,
  49. typeInEditor
  50. }