Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let mobileJsTestFunc = function (chain, test) {
- tools.initTest(test);
- tools.openUrlPuppeteer(
- { test: test,
- preCatchRe: [
- /\/collect?.*&t=pageview/,
- /\/collect?.*&t=event.*&ea=layout_dimension.*=prism/,
- /session_tr.+t=\d+&session=[^&]+&site=\d+&expid=0/,
- /amp-carousel-0\.1\.js/
- ]
- }, async function (page, harLogFilePath, browser) {
- const params = test.params;
- const pages = params.pages;
- const ads = params.ads;
- await page.setDefaultNavigationTimeout(20000);
- await page.setDefaultTimeout(20000);
- await page.waitFor(waitBeforeTest);
- /* Проверяем что наш скрипт сгенерил свайп-навигацию
- * Ожидаемый результат: Кол-во буллитов для свайпа 7*/
- await scrape(['.cl-swipe-holder .cl-swipe-nav > li'], page, test, (result) => {
- tools.assert('equal', result['elementData'].length, 7, `Не работает листалка. \nНеправильное количество элементов ${result['selector']}. ${result['url']}`, test);
- });
- /* Проверяем что поиск открывается */
- await page.tap('button#cl-search');
- await page.waitForSelector('amp-sidebar#cl-sidebar-search:not([hidden])');
- await page.waitFor(200);
- await page.tap('amp-sidebar#cl-sidebar-search + button.cl-close-sidebar');
- await page.waitFor(1000);
- /* Проверяем что бургер меню открывается */
- await page.tap('button#cl-burger');
- await page.waitForSelector('amp-sidebar#cl-sidebar:not([hidden])');
- await page.waitFor(200);
- await page.tap('amp-sidebar#cl-sidebar + button.cl-close-sidebar');
- await page.waitFor(500);
- let testPage = async function(options) {
- const divId = options['divId'];
- const nextDivId = divId < 3 ? divId + 1 : 1;
- const pageId = options['pageId'];
- const inarticleCount = options['inarticleCount'];
- const doSwipe = options['doSwipe'];
- const relatedMinCount = options['relatedMinCount'];
- /* Включаем кетч для скриптов, работающих по скроллу */
- if(pageId === 1) {
- tools.waitForResponse({re: /page\.js/}, page, test);
- tools.waitForResponse({re: /outbrain\.js/}, page, test);
- tools.waitForResponse({re: /amp-list-0\.1\.js/}, page, test);
- tools.waitForResponse({re: /amp-mustache-0\.2\.js/}, page, test);
- // tools.waitForResponse({re: /amp-carousel-0\.1\.js/}, page, test);
- }
- /* Немного ждем прогрузки страницы */
- await page.waitFor(300);
- /* Проверяем что основная картинка загрузилась */
- await page.waitForSelector(`#cl-swipe-id${divId} .article-header > amp-img:first-of-type img`);
- /* Проверяем что картинки через BG загрузились */
- // await page.waitForSelector(`#cl-swipe-id${divId} article > .aawp .aawp-product:first-of-type amp-img img`);
- /* Скроллим страницу */
- let scrollPos = 0;
- let scrollHeight;
- while(!scrollHeight || scrollPos < scrollHeight) {
- let scrollCurrent = await page.evaluate(() => {
- window.scrollBy(0, window.innerHeight);
- return {'innerHeight': window.innerHeight, 'scrollHeight': document.body.scrollHeight};
- });
- await page.waitFor(waitBeforeScrollStep);
- scrollHeight = scrollCurrent.scrollHeight;
- scrollPos = scrollPos + scrollCurrent.innerHeight;
- }
- /* Проверяем что отрисовался outbrain */
- await page.waitForSelector(`#cl-swipe-id${divId} div.ob-smartfeed-wrapper`);
- if (typeof ads === 'object') {
- if('sticky' in ads) {
- /* Проверяем что в стики отрисовался адюнит */
- await page.waitForSelector(`#cl-swipe-id${divId} #lx_${ads.sticky} div[id^="google_ads_iframe"]`);
- /* Проверяем видимость стики-блока для юзера */
- tools.checkVisible(`#cl-swipe-id${divId} #lx_${ads.sticky}`, 'Sticky ad unit container is invisible for user', page, test);
- /* Закрываем стики блок */
- await page.tap(`#cl-swipe-id${divId} #lx_${ads.sticky} button#cl_close_button`);
- /* Проверяем что стики закрылся */
- tools.checkInvisible(`#cl-swipe-id${divId} #lx_${ads.sticky}`, 'Sticky ad unit container is invisible for user', page, test);
- }
- if('inarticle' in ads) {
- /* Проверяем что отрисовались все инартиклы */
- if (inarticleCount) {
- for (var i = 1; i < inarticleCount + 1; i++) {
- await page.waitForSelector(`#cl-swipe-id${divId} #lx_${ads.inarticle}-${i} div[id^="google_ads_iframe"]`);
- }
- }
- }
- if('fix' in ads) {
- /* Проверяем что отрисовался фикс блок */
- await page.waitForSelector(`#cl-swipe-id${divId} #lx_${ads.fix} div[id^="google_ads_iframe"]`);
- }
- }
- if(relatedMinCount > 0){
- /* Проверяем наличие инартикл рилейтед блока и кол-во статей внутри */
- await scrape([`#cl-swipe-id${divId} .cl-related .i-amphtml-scrollable-carousel-container .articles-list-article__slider`], page, test, result => {
- tools.assert('isAtLeast', result['elementData'].length, relatedMinCount, `Страница ${pageId}. В related in-article недостаточно статей (${result['elementData'].length} < ${relatedMinCount}). \nНеправильное количество элементов ${result['selector']}. ${result['url']}`, test);
- });
- /* Проверяем наличие текстов и картинок внутри инартикл блока */
- await page.waitForSelector(`#cl-swipe-id${divId} .cl-related .i-amphtml-scrollable-carousel-container div:first-child a.articles-list-article__image`);
- await page.waitForSelector(`#cl-swipe-id${divId} .cl-related .i-amphtml-scrollable-carousel-container div:first-child a.articles-list-article__description`);
- /* Проверяем наличие фикс блока и кол-во статей внутри, наличие заголовка */
- await scrape([`#cl-swipe-id${divId} .cl-related div[role=listitem]`], page, test, result => {
- tools.assert('isAtLeast', result['elementData'].length, relatedMinCount, `Страница ${pageId}. В related fixed недостаточно статей (${result['elementData'].length} < ${relatedMinCount}). \nНеправильное количество элементов ${result['selector']}. ${result['url']}`, test);
- });
- await page.waitForSelector(`#cl-swipe-id${divId} .cl-related div[role=listitem]:first-child .cl-related-title`);
- }
- /* Проверяем что сгенерились соцкнопки */
- // await page.waitForSelector(`#cl-swipe-id${divId} .a2a_kit svg`);
- /* Проверяем что сгенерился Outbrain */
- await page.waitForSelector(`div.ob-widget`);
- if(doSwipe) {
- /* Включаем кетч для скриптов, работающих по свайпу */
- tools.waitForResponse({re: /session_tr.+t=\d+&session=[^&]+&site=\d+&expid=0/}, page, test);
- tools.waitForResponse({re: new RegExp(`\/collect?.*&t=event.*&ec=navigation.*&ea=swipe_right.*&tid=${params.gaAccountId}.*`)}, page, test);
- // tools.waitForResponse({re: /outbrain\.com\/utils\/get/}, page, test);
- /* Перелистываем страницу кликнув на Next Article */
- await page.tap(`#cl-swipe-id${divId} #cl-next-article`);
- /* Проверяем что следующая страница загрузилась */
- await page.waitForSelector(`#cl-swipe-id${nextDivId}.cl-current #cl-shadow-id${nextDivId} main article h1`);
- }
- };
- /* Гоняем проверки по страницам */
- // console.log(pages.length);
- if(pages.length) {
- let div = 1;
- let i = 1;
- let swipe;
- for (const page of pages) {
- swipe = !(i === pages.length);
- // console.log({divId: div, pageId: i, inarticleCount: page.inarticleCount, doSwipe: swipe});
- await testPage({
- divId: div,
- pageId: i,
- inarticleCount: page.inarticleCount,
- relatedMinCount: page.relatedMinCount,
- doSwipe: swipe
- });
- div = div < 3 ? div + 1 : 1;
- i++;
- }
- }
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement