Простой способ разделить тесты мокко на несколько файлов - PullRequest
0 голосов
/ 10 февраля 2020

Я прочитал несколько статей и документов, но все еще испытываю трудности с настройкой структуры теста мокко, которая работает и имеет смысл. Конечно, у меня есть один файл, который содержит все мои тесты. Я хочу разделить их на отдельные файлы, чтобы сгруппировать соответствующие тесты. Все они зависят от одного и того же теста входа в систему для успешной работы, а также от некоторых переменных, установленных в этом файле. Вместо того, чтобы помещать тест входа в систему в каждом файле, в котором я группирую подобные тесты, я хотел бы включить / require / import (независимо от того, что это) вход в систему. js file / test, который по существу будет запускать установку для каждого пакета. Мне также хотелось бы иметь возможность запускать один набор тестов или все из них, но включать только логин. js файл один раз.

Ниже приведено то, что я имею в виду для своего логина. js

const { Builder, By, Key, until } = require('selenium-webdriver')
const assert = require('assert')
const server = ''
const cid = '6130'
const equipmentID = '14'
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
describe(" Tests", function () {
    let randNum = String(Math.random()),
        randNum2 = String(Math.random()),
        randInt = String(Math.floor((Math.random() * 10) + 1))
    this.timeout(30000)
    let driver
    before('Login',async function () {
        const webdriver = require('selenium-webdriver');
        const chromeCapabilities = webdriver.Capabilities.chrome();
//setting chrome options to start the browser fully maximized
        const chromeOptions = {
            'args': ['--test-type', '--start-maximized', '--incognito','acceptInsecureCerts = true','--ignore-certificate-errors']
        };
        chromeCapabilities.set('chromeOptions', chromeOptions);
        driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();
        await driver.get(server + "/index.php")
        driver.wait(function() {
            return driver.executeScript('return document.readyState').then(function(readyState) {
                return readyState === 'complete';
            });
        });
        console.log("Driver Object Created Successfully")
    });
    after(async function () {

        // do something after test suite execution is finished
        // no matter if there are failed cases
        await driver.quit();
    });
    beforeEach(async function () {

    });
    afterEach(async function () {

        // do something after test case execution is finished
        // no matter if there are failed cases
    });
    it('Login', async function() {
        let username = 'admin'
        await driver.get(server + "/index.php")
        try {
            await driver.findElement(By.name("login_user")).click()
        }
        catch(error){
            console.log(error)
            await driver.findElement(By.name("login_user")).click()
        }
        await driver.findElement(By.name("login_user")).sendKeys(username)
        await driver.findElement(By.name("login_pass")).click()
        await driver.findElement(By.name("login_pass")).sendKeys("admin")
        await driver.findElement(By.css(".btn")).click()
        console.log("Log in Complete")
    })

Я бы хотел назвать это из другого тестового файла, например,

describe("Add Customer Wizard", function () {
before(async function () {

}
xit('Add Customer Wizard - Working', async function(){
    let lastName = 'Account',
        firstName ='Test',
        emailAddress = randNum+'test@test.com'+randNum2,
        phone = '5555555555',
        customerNote = 'Test note',
        socialSecurity = '012345678',
        dateOfBirth = '09-09-15',
        street = 'Test DR',
        city = (randNum+randNum2) + 'Random Lake',
        zip = '99999';
    await driver.get(server + "/index.php");
    await driver.findElement(By.id("firstName")).click();
    await driver.findElement(By.id("firstName")).sendKeys(firstName);
    await driver.findElement(By.id("lastName")).click();
    await driver.findElement(By.id("lastName")).sendKeys(lastName);
    await driver.findElement(By.id("emailAddress")).click();
    await driver.findElement(By.id("emailAddress")).sendKeys(emailAddress);
    await driver.findElement(By.name("Phone[Home][Number]")).click();
    await driver.findElement(By.name("Phone[Home][Number]")).sendKeys(phone);
    await driver.findElement(By.id("customerNotes")).click();
    await driver.findElement(By.id("customerNotes")).sendKeys(customerNote);
    await driver.findElement(By.id("referredBy")).click();
    //await driver.findElement(By.id("referredBy")).sendKeys("285");
    await driver.findElement(By.id("socialSecurityNumber")).click();
    await driver.findElement(By.id("socialSecurityNumber")).sendKeys(socialSecurity);
    await driver.findElement(By.id("dateOfBirth")).click();
    await driver.findElement(By.id("dateOfBirth")).sendKeys(dateOfBirth);
    await driver.findElement(By.linkText("Next")).click();
    await driver.findElement(By.id("physicalStreet")).click();
    await driver.findElement(By.id("physicalStreet")).sendKeys(street);
    await driver.findElement(By.id("physicalCity")).click();
    await driver.findElement(By.id("physicalCity")).sendKeys(city);
    await driver.findElement(By.id("select2-physicalState-container")).click();
    await driver.findElement(By.id("physicalStreet")).click();
    await driver.findElement(By.id("physicalZip")).click();
    await driver.executeScript("window.scrollTo(0,265)");
    await driver.findElement(By.id("physicalZip")).sendKeys(zip);
    await driver.findElement(By.id("automaticallyGeocode")).click();
    await driver.findElement(By.linkText("Next")).click();
    await driver.findElement(By.linkText("Next")).click();
    await driver.findElement(By.xpath("//*[@id=\"select2-serviceCategorySelect-container\"]")).click();
    await driver.findElement(By.xpath("/html/body/span/span/span[2]/ul/li[1]")).click();
    await driver.findElement(By.xpath("/html/body/section/div/section/div[1]/div[1]/form/div/div[4]/div[2]/div/span/span[1]/span")).click();
    await driver.findElement(By.xpath("/html/body/span/span/span[2]/ul/li[1]")).click();
    await driver.findElement(By.id("addService")).click();
    await driver.findElement(By.linkText("Next")).click();
    await driver.findElement(By.linkText("Save")).click();
    // wait for customer creation and page to load
    await sleep(1000);
    //verify customer info
    //go to contact info
    let actualCustomerNote = await driver.findElement(By.id("text_area_01")).getText();
    assert.strictEqual(actualCustomerNote,customerNote,'Customer Note Not Equal');
    await driver.findElement(By.css("#home > table > tbody > tr > td > table > tbody > tr > td:nth-child(1) > table > tbody > tr:nth-child(4) > td > div > div > table > tbody > tr:nth-child(2) > td > table > tbody > tr > td > table > tbody > tr > td:nth-child(3) > a")).click();
    let actualFirstName = await driver.findElement(By.name("firstname")).getAttribute('value'),
        actualLastName = await driver.findElement(By.id("lastname")).getAttribute('value'),
        actualEmailAddress = await driver.findElement(By.id("portalusername")).getAttribute('value'),
        actualPhone = await driver.findElement(By.css("#editContact > div:nth-child(2) > div > div.col-10 > div.card > div > div.phones > div > div:nth-child(1) > input.phoneInput.phoneNumber")).getAttribute('value'),
        actualDateOfBirth = await driver.findElement(By.id("dateOfBirth")).getAttribute('value'),
        actualStreet = await driver.findElement(By.id("billaddress1")).getAttribute('value'),
        actualCity = await driver.findElement(By.id("billcity")).getAttribute('value'),
        actualZip = await driver.findElement(By.id("billzip")).getAttribute('value');
    assert.strictEqual(actualFirstName,firstName, "First name not Equal");
    assert.strictEqual(actualLastName,lastName, "Last name not equal");
    assert.strictEqual(actualEmailAddress,emailAddress, "Email not equal");
    assert.strictEqual(actualPhone,phone,'Phone numbers not equal');
    assert.strictEqual(actualDateOfBirth,dateOfBirth,'Date of birth not equal');
    assert.strictEqual(actualStreet,street,'Street not equal');
    assert.strictEqual(actualCity,city,'Cities not equal');
    assert.strictEqual(actualZip,zip,'Zip codes not equal');
    })
)}
...