Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { assert, expect } from "chai";
- import puppeteer from "puppeteer";
- import axios from "axios";
- import EstateDBFields from 'shared/EstateDBFields';
- import EstateTransactionTypes from 'shared/EstateTransactionTypes';
- import { ObjectID as MongoID } from "mongodb";
- let browser;
- let page;
- const IndexPageURL = `${process.env.PANORO_TESTS_URL}`;
- const SearchPageURL = `${process.env.PANORO_TESTS_URL}/cauta/vanzari/Apartamente/Cluj-Napoca`;
- const SearchPageMetaDescription = 'Vanzari apartamente Cluj si Inchirieri Apartamente Cluj prin Agentia Imobiliara Panoro. Oferte imobiliare spre Inchiriere si Vanzare in Cluj. Vanzare terenuri si case';
- const SearchPageTitle = 'Imobiliare Cluj | Portal anunturi imobiliare Panoro';
- let TransactionTypeData = [0, 1];
- let ImobilTypeData = [
- { id: '59fd616efef3121cf8028f71', name: 'Apartamente', url: 'Apartamente' },
- { id: '5a6599d48e595c292c981c5c', name: 'Case/Vile', url: 'Case-Vile' },
- { id: '5a6599df8e595c292c981c5f', name: 'Spatii industriale', url: 'Spatii-industriale' },
- { id: '5a6599e78e595c292c981c65', name: 'Terenuri', url: 'Terenuri' },
- { id: '5a6599e28e595c292c981c62', name: 'Spatii comerciale', url: 'Spatii_comerciale' },
- { id: '5a65b7a8c0217b07387dcf23', name: 'Birouri', url: 'Birouri' }
- ];
- console.log("RUN HEADLESS:", process.env.PANORO_TESTS_RUNHEADLESS);
- function testDataFromIndex(getData) {
- let CityName = 'Cluj-Napoca';
- let TransactionType;
- let TransactionName;
- let CategoryID;
- let CategoryName;
- let CategoryUrl;
- let CityID;
- let EstatesData;
- let LastSearchObject;
- let SearchData;
- describe("[SearchPage][Data from IndexPage]", () => {
- before(async () => {
- browser = await puppeteer.launch({ headless: parseInt(process.env.PANORO_TESTS_RUNHEADLESS) });
- let data = getData();
- TransactionType = data.transactionType;
- TransactionName = TransactionType == [EstateTransactionTypes.VANZARE] ? 'vanzari' : 'inchirieri';
- CategoryID = data.imobilTypeId;
- CategoryName = data.imobilTypeName;
- CategoryUrl = data.imobilTypeUrl;
- // console.log('data ->', data);
- });
- it("Search Ads has the correct url", async () => {
- await page.goto(IndexPageURL);
- await page.waitForSelector('#indexTop4-type');
- if (TransactionType == [EstateTransactionTypes.VANZARE]) {
- await page.click("#vanzari");
- } else {
- await page.click("#inchirieri");
- }
- await page.click(".select-wrapper");
- const selectHandle = await page.$('#imobilType-select');
- let values = await selectHandle.$$eval('.imobilType-option', nodes => nodes.map(n => n.innerText));
- for (let i = 0, length = values.length; i < length; i++) {
- if (values[i] == CategoryName) {
- /*** Nu stiu cum sa dau click exact pe optiunea pe care trebuie ***/
- // await page.click(".imobilType-option");
- console.log('CLICKED ->', values[i], CategoryName);
- }
- }
- await page.focus('#liveSearch_input');
- await page.keyboard.type(CityName);
- await Promise.all([
- page.click("#liveSearch_button"),
- page.waitForNavigation()
- ]);
- await page.waitForSelector('#searchPage_layout1_cnt');
- let url = `${process.env.PANORO_TESTS_URL}/cauta/${TransactionName}/${CategoryUrl}/${CityName}`;
- let expectedUrl = await page.evaluate(() => window.location.href);
- /*** expectedUrl este mereu '.../cauta/vanzari/Apartamente/Cluj-Napoca' ***/
- // console.log('URL ->', url, 'expectedUrl ->', expectedUrl);
- // expect(url).to.equal(expectedUrl);
- console.log(`DONE TESTING -> ${TransactionName} ${CategoryName}`);
- });
- it("SearchPage has the correct number of ads", async () => {
- await page.waitForSelector('.ad-grid-wrapper');
- let ads = await page.$$('.ad-grid-wrapper');
- let city = await axios.get(`${process.env.PANORO_TESTS_URL}/api/locations/visitors/search`, { params : { name: CityName, limit: 1 } });
- CityID = city.data[0]._id;
- let lastSearchObject = {
- [EstateDBFields.TRANSACTION_TYPE]: { valueType: "i", value: TransactionType },
- [EstateDBFields.CITYID]: { type: "in", value: [ CityID ] },
- imobilTypeID: { value: CategoryID, valueType: "id" }
- };
- let searchData = { sort: { code: -1 }, search: lastSearchObject };
- // console.log('searchData Before Request ->', searchData);
- let estates = await axios.post(`${process.env.PANORO_TESTS_URL}/api/estates/visitors/get/all`, searchData);
- EstatesData = estates.data;
- console.log('EstatesData ->', EstatesData.length);
- // expect(ads.length).to.equal(estates.data.length);
- console.log(`DONE TESTING -> ${TransactionName} ${CategoryName}`);
- });
- });
- };
- describe("[IndexPage]", () => {
- before(async () => {
- browser = await puppeteer.launch({ headless: parseInt(process.env.PANORO_TESTS_RUNHEADLESS) });
- page = await browser.newPage();
- page.setViewport({ width: 1440, height: 768 });
- });
- for (let i = 0, length = TransactionTypeData.length; i < length; i++) {
- for (let j = 0, length2 = ImobilTypeData.length; j < length2; j++) {
- let indexData = {
- transactionType: TransactionTypeData[i],
- imobilTypeId: ImobilTypeData[j].id,
- imobilTypeName: ImobilTypeData[j].name,
- imobilTypeUrl: ImobilTypeData[j].url
- };
- testDataFromIndex(
- () => { return indexData; }
- );
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement