如何做基于OS Profile的Protractor配置

时间:2017-12-19 11:24:13

标签: testing protractor jasmine-node

我正在编写一个量角器测试套件,我想在不同的操作系统平台上执行它们。 我在Windows上开发,因此我的主要设置是根据Windows设置的,但我的主要执行环境是linux。 问题是,在我推送代码之前,我需要注释特定于Windows的设置并启用特定于linux的设置。 有没有办法维护这两个设置并根据执行配置文件选择它们?

实施例: Windows上视频记者的设置是 -



jasmine.getEnv().addReporter(new VideoReporter({
  baseDirectory: './test-output/videoreport',
  createSubtitles: false,
  saveSuccessVideos: true,
  singleVideo: true,
  ffmpegCmd: "C:/FFmpeg/bin/ffmpeg.exe",
  ffmpegArgs: [
    '-f', 'gdigrab',
    '-framerate', '30',
    '-video_size', 'wsxga',
    '-i', 'desktop',
    '-q:v', '10',
  ]
}));




虽然对于linux来说是相同的 -



jasmine.getEnv().addReporter(new VideoReporter({
  baseDirectory: './test-output/videos',
  saveSuccessVideos: true,
  ffmpegCmd: '/usr/local/bin/ffmpeg',
  ffmpegArgs: [
    '-y',
    '-r', '30',
    '-f', 'x11grab',
    '-s', '1280x1024',
    '-i', process.env.DISPLAY,
    '-g', '300',
    '-vcodec', 'mpeg4'
  ]
}));




目前我在Windows / linux之间切换时禁用一个并启用其他功能。 我想要这样做,并启用它们,但根据执行环境激活。 有办法吗?

1 个答案:

答案 0 :(得分:0)

处理此问题的好方法是在onPrepare()。您可以从命令行传入环境标志,并使用onPrepare设置正确的设置。

--params.environment=windows
--params.environment=linux

然后在onPrepare你可以做这样的事情:

onPrepare: () => {  

  if(browser.params.environment === "linux") {

    jasmine.getEnv().addReporter(new VideoReporter({
      baseDirectory: './test-output/videos',
      saveSuccessVideos: true,
      ffmpegCmd: '/usr/local/bin/ffmpeg',
      ffmpegArgs: [
        '-y',
        '-r', '30',
        '-f', 'x11grab',
        '-s', '1280x1024',
        '-i', process.env.DISPLAY,
        '-g', '300',
        '-vcodec', 'mpeg4'
      ]
    }));

  } else {

    jasmine.getEnv().addReporter(new VideoReporter({
      baseDirectory: './test-output/videoreport',
      createSubtitles: false,
      saveSuccessVideos: true,
      singleVideo: true,
      ffmpegCmd: "C:/FFmpeg/bin/ffmpeg.exe",
      ffmpegArgs: [
        '-f', 'gdigrab',
        '-framerate', '30',
        '-video_size', 'wsxga',
        '-i', 'desktop',
        '-q:v', '10',
      ]
    }));
  }   

}