※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。
この記事ではSFRAにデフォルトで入っているテストツールを紹介します。
※ mocha, chai, codeceptjs といったサードパーティの使い方については説明しませんので、ご了承ください。
利用方法
sgmf-scripts というSFRAを利用するために便利なコマンドツールを通して利用します。
コードがすでにpackage.json内のスクリプトとして記載されていますので、npm 〜 といった形で利用することになります。
ユニットテスト
利用しているツール
実行方法
テストコードは、/test/unit
内に作成します。あらかじめSFRAのテストコードが入っているので、参考にしながら作成してください。テストコード作成した後は下記コマンドを実行します。
## テストを実行
npm test
## テストを実行し、さらにカバレージを出力
npm run cover
カバレージは /coverage
に出力されます。
インテグレーションテスト
利用しているツール
実行方法
テストコードは、/test/integration
内に作成します。あらかじめSFRAのテストコードが入っているので、参考にしながら作成してください。テストコード作成した後は下記コマンドを実行します。
実際にソースコードをサーバーにデプロイした後に実行するため、テストするホストを指定する必要があるので、-- --baseUrl
をつけています。指定しない場合は、dw.json
内のhostnameを参照します。
npm run test:integration -- --baseUrl XXXX.XXXX.XXXX.dx.commercecloud.salesforce.com
サイトによってパスが違うと思います。test/integration/it.config.js
に適切なパスを設定してください。
※ デフォルトのテストコードではエラーが出てしまうかもしれないので、テストコードを修正してください。
EtoE テスト
利用しているツール
実行方法
デフォルトでは下記のコードで動くことになっています。
npm run test:acceptance:smoke chrome
ドメインはcodecept.conf.js
にてdw.json
のhostname
を読み込んでいます。
また、サイトによってパスが違うと思います。test/acceptance/metadata.json
に適切なパスを設定してください。
※ デフォルトのテストコードではエラーが出てしまうかもしれないので、テストコードを修正してください。
Mac OS上だとうまく動かないようですので、下記では違うやり方でやる方法を紹介します。
- codeceptjsとpuppeteerのインストール
## package.jsonの依存関係のインストール
npm install
## codeceptjsのインストール
npx create-codeceptjs .
## puppeteerのインストール
npm install --save-dev puppeteer
## 脆弱性の修正
npm audit fix
-
codecept.conf.js
を下記の内容でpackage.json
と同じ階層でに設置。(npx codeceptjs init
でも設定できるようですが、省いています。)
const { setHeadlessWhen, setCommonPlugins } = require('@codeceptjs/configure');
const cwd = process.cwd();
const fs = require('fs');
const path = require('path');
setHeadlessWhen(process.env.HEADLESS);
setCommonPlugins();
function getDwJson() {
if (fs.existsSync(path.join(cwd, 'dw.json'))) {
return require(path.join(cwd, 'dw.json'));
}
return {};
}
const DEFAULT_HOST = 'https://' + getDwJson().hostname;
const HOST = DEFAULT_HOST || process.env.HOST;
const metadata = require('./test/acceptance/metadata.json');
exports.config = {
gherkin: {
features: './test/acceptance/features/**/*.feature',
steps: './test/acceptance/steps/**/*.js',
},
cleanup: true,
coloredLogs: true,
output: './output',
helpers: {
Puppeteer: {
url: HOST,
show: false,
windowSize: '1200x900',
waitForTimeout: 100000
},
},
include: metadata.include,
bootstrap: null,
mocha: {},
plugins: {
screenshotOnFail: {
enabled: true,
},
retryFailedStep: {
enabled: true,
}
},
name: 'sample-cicd'
}
- 下記のコマンドで実行します
npx codeceptjs run
※ デフォルトのテストコードではエラーが出てしまうかもしれないので、テストコードを修正してください。