Передача определенных учетных данных для входа в пользовательские команды из приборов - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь использовать Cypress для различных форм тестирования и столкнулся с проблемой, которую я считаю синтаксисом. Я сгенерировал файл JSON фикстур, который содержит две формы ID под именем в следующем формате:

"USER": {
    "stationID": "(value)",
    "profileID": "(other value)"
  },

При вызове пользовательской команды для входа в систему, я передаю имя учетной записи как «account» (в данном случае «USER») вместе с переменной env из cypress.config. Я пытаюсь извлечь из атрибута связанные атрибуты именованной учетной записи и передать их непосредственно в два поля свободной формы, например ...

Cypress.Commands.add('login', ({env, account}) => {
    cy.fixture('users').as('usersJson')
    cy.visit(Cypress.env(env))
    cy.get('#warning-modal-ok-btn').click()
    cy.get('.panel-footer > a').click()
    cy.get('#stationIdPopUp').type(account.stationID.usersJson)
    cy.get('#usernamePopUp').type(a hardcoded value)
    cy.get('#passwordPopUp').type(another hardcoded value)
    cy.get('#profileIdPopUp').type(account.profileID.userJson)
    cy.get(':nth-child(6) > .col-sm-12 > .loginBtn').click()
    cy.get('#center-header > h1').should('be.visible')
  })

Результатом является набор неопределенных записей для входов в поля stationID и profileID. Может ли кто-нибудь любезно сказать мне, куда я схожу с рельсов?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я считаю, что ваш код .type должен выглядеть следующим образом:

cy.fixture('users').as('usersJson')
cy.get('#stationIdPopUp').type(usersJson.USER.stationID)
0 голосов
/ 28 марта 2019

Первое, что я подозреваю, это - .type(account.stationID.usersJson), похоже, не правильно; поскольку usersJson является псевдонимом прибора.

Подробнее об использовании прибора можно прочитать здесь,

  1. https://docs.cypress.io/api/commands/fixture.html#Syntax
  2. https://example.cypress.io/commands/files

Существует множество подходов для извлечения данных из JSON и использования их в тесте.

  1. Вот подход с приспособлениями Cypress ,

Файл: cypress/fixtures/queriesData.json

[
    {
        "sample": "SOME_DATA"
    },
    {
        "sample": "SOME_DATA_1"
    }
]

В моем тесте я буду использовать данные, как показано ниже,

cy.fixture('queriesData').as('queries')
cy.get('@queries').each((query) => {
    //Use the value of query here
    cy.log(query.sample) //Output: 'SOME_DATA'
})
  1. Другой подход с импортом файла JSON непосредственно в тест ,

Файл: some_path/jsonFile.json

"USER": {
    "stationID": "(value)",
    "profileID": "(other value)"
  }

Затем в моем тесте я импортирую файл JSON и получаю данные,

import * as userData from "some_path/jsonFile.json"

cy.log(userData.USER.stationId) // Output: (value)
...