3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Salesforce B2C Commerce カートリッジソースコードのテストについて

Last updated at Posted at 2022-06-08

※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。

この記事ではSFRAにデフォルトで入っているテストツールを紹介します。
※ mocha, chai, codeceptjs といったサードパーティの使い方については説明しませんので、ご了承ください。

利用方法

sgmf-scripts というSFRAを利用するために便利なコマンドツールを通して利用します。
コードがすでにpackage.json内のスクリプトとして記載されていますので、npm 〜 といった形で利用することになります。

ユニットテスト

利用しているツール

mocha, chai, sinon

実行方法

テストコードは、/test/unit 内に作成します。あらかじめSFRAのテストコードが入っているので、参考にしながら作成してください。テストコード作成した後は下記コマンドを実行します。

## テストを実行
npm test
## テストを実行し、さらにカバレージを出力
npm run cover

カバレージは /coverage に出力されます。

インテグレーションテスト

利用しているツール

mocha, chai

実行方法

テストコードは、/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 テスト

利用しているツール

codeceptjs

実行方法

デフォルトでは下記のコードで動くことになっています。

npm run test:acceptance:smoke chrome

ドメインはcodecept.conf.jsにてdw.jsonhostnameを読み込んでいます。
また、サイトによってパスが違うと思います。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

※ デフォルトのテストコードではエラーが出てしまうかもしれないので、テストコードを修正してください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?