Testcafe Обработка файлов cookie? - PullRequest
4 голосов
/ 04 июля 2019

У меня вопрос по использованию TestCafe.У меня есть скрипт (крепеж) с двумя тестами внутри.Если первый тест запускает URL, и если он не вошел в систему, скрипт войдет на сайт.

НО: второй тест всегда также входит в систему.Похоже, Testcafe не распознает файлы cookie, сделанные в устройстве.Что это за строка внутри прибора или бегуна, чтобы сохранить установленные куки?

import { Selector } from 'testcafe';

fixture `Ordner erstellen`
   .page `xxxx`
   .before(async ctx  => {
      ctx.clLogin = `xxxx`;
      ctx.clPassword = `xxx`;
    });
test('Create and Delete Folder1', async t => {
const testfolder = Selector('.np-folder-name[title="19233456"]')
await t
   .typeText(Selector('#email'), t.fixtureCtx.clLogin, {
      caretPos: 0
   })
   .typeText(Selector('#password'), t.fixtureCtx.clPassword, {
      caretPos: 0
   })
   .click(Selector('span').withText('Login'))
   .click(Selector('.np-top-section-tab.folder'))
await t
   .wait(2000)
   .expect(testfolder.withText('19233456').exists).notOk()

test('Create and Delete Folder2', async t => {
const testfolder = Selector('.np-folder-name[title="19233456"]')
await t
   .typeText(Selector('#email'), t.fixtureCtx.clLogin, {
      caretPos: 0
   })
   .typeText(Selector('#password'), t.fixtureCtx.clPassword, {
      caretPos: 0
   })
   .click(Selector('span').withText('Login'))
   .click(Selector('.np-top-section-tab.folder'))
await t
   .wait(2000)
   .expect(testfolder.withText('19233456').exists).notOk()

Я также попробовал концепцию ролей из testcafe.Но это тоже не очень хорошо работает.

import { Selector, Role } from 'testcafe';



const admin = Role('https://bc3-channel.cliplister.com/', async t => {
    await t
        .typeText(Selector('#email'), `xxx`, {
            caretPos: 0
        })
        .typeText(Selector('#password'), `xxx`, {
            caretPos: 0
        })
        .click(Selector('span').withText('Login'))
});

fixture `Ordner erstellen`
    .page `xxx`


test('Create and Delete Folder', async t => {
    const testfolder = Selector('.np-folder-name[title="19233456"]')
    await t
        .useRole(admin)
        .navigateTo('xxx')
        .click(Selector('.np-top-section-tab.folder'))

});


test('Create and Delete Folder2', async t => {
    const testfolder = Selector('.np-folder-name[title="19233456"]')
    await t
        .navigateTo('xxx')
        .click(Selector('.np-top-section-tab.folder'))
    await t
        .wait(2000)
        .expect(testfolder.withText('19233456').exists).notOk()

});

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Каждый тест в TestCafe начинается с чистых файлов cookie и хранилищ.Вам нужно использовать вызов useRole в каждом тесте, если вы хотите оставаться в системе. Функция useRole восстанавливает файлы cookie и хранилища во втором и последующих вызовах, которые были сохранены при первом вызове.Вы можете вызвать функцию useRole в хуке beforeEach вместо записи ее вручную в каждом тесте.

Роли пользователя

Тестовые зацепки

1 голос
/ 19 июля 2019

Вот как вы можете решить, используя Role API.

Создайте объектный файл страницы Login.js с вашим действием входа в систему

const adminLogin = Role('https://bc3-channel.cliplister.com/', async t => {
    await t
        .typeText(Selector('#email'), `xxx`, {
            caretPos: 0
        })
        .typeText(Selector('#password'), `xxx`, {
            caretPos: 0
        })
        .click(Selector('span').withText('Login'))
});

Затем вызовите этот const adminLogin в вашем файле фикстуры какпоказано ниже: fixture.js

import { adminLogin } from '../page-objects/login';
fixture `Ordner erstellen`.beforeEach(async t => {
  await t.useRole(adminLogin ).navigateTo('url of the page that you want to open');
});
...