2019.01.21

Nightwatch.jsでdisabled属性をテストしたい


HTML

<button disabled>送信</button>

テストコード

'disabled属性が有効ならOK': (client) => {
  client
    // これはOK
    .assert.attributeEquals('button', 'disabled', 'true')
    // エラー expected "true" but got: "true"
    .assert.attributeEquals('button', 'disabled', true)
}

'disabled属性が無効ならOK': (client) => {
  client
    // エラー expected "false" but got: "null"
    .assert.attributeEquals('button', 'disabled', 'false')
    // エラー expected "false" but got: "null"
    .assert.attributeEquals('button', 'disabled', false)
    // エラー expected "null" but got: "null"
    .assert.attributeEquals('button', 'disabled', 'null')
    // エラー expected "null" but got: "null"
    .assert.attributeEquals('button', 'disabled', null)
    // エラー expected "" but got: "null"
    .assert.attributeEquals('button', 'disabled', '')
}

下記のようにすればOK。
なおアロー関数式で書くと、this.assertundefinedで死ぬので注意。

'disabled属性が無効ならOK': (client) => {
  client
    .getAttribute('button', 'disabled', function (result) {
      this.assert.equal(result.value, null)
    })
}