React: All landing pages (#19943)
* default all remaining landing pages to react, update tests
This commit is contained in:
@@ -17,22 +17,35 @@ describe('browser search', () => {
|
||||
|
||||
it('works on the homepage', async () => {
|
||||
await page.goto('http://localhost:4001/en')
|
||||
await page.click('#search-input-container input[type="search"]')
|
||||
await page.type('#search-input-container input[type="search"]', 'actions')
|
||||
await page.click('[data-testid=site-search-input]')
|
||||
await page.type('[data-testid=site-search-input]', 'actions')
|
||||
await page.waitForSelector('.ais-Hits')
|
||||
const hits = await page.$$('.ais-Hits-item')
|
||||
expect(hits.length).toBeGreaterThan(5)
|
||||
})
|
||||
|
||||
it('works on article pages', async () => {
|
||||
it('works on mobile landing pages', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
await page.click('#search-input-container input[type="search"]')
|
||||
await page.type('#search-input-container input[type="search"]', 'workflows')
|
||||
await page.click('[data-testid=mobile-menu-button]')
|
||||
await page.click('[data-testid=mobile-header] [data-testid=site-search-input]')
|
||||
await page.type('[data-testid=mobile-header] [data-testid=site-search-input]', 'workflows')
|
||||
await page.waitForSelector('.ais-Hits')
|
||||
const hits = await page.$$('.ais-Hits-item')
|
||||
expect(hits.length).toBeGreaterThan(5)
|
||||
})
|
||||
|
||||
it('works on desktop landing pages', async () => {
|
||||
const initialViewport = page.viewport()
|
||||
await page.setViewport({ width: 1024, height: 768 })
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
await page.click('[data-testid=desktop-header] [data-testid=site-search-input]')
|
||||
await page.type('[data-testid=desktop-header] [data-testid=site-search-input]', 'workflows')
|
||||
await page.waitForSelector('.ais-Hits')
|
||||
const hits = await page.$$('.ais-Hits-item')
|
||||
expect(hits.length).toBeGreaterThan(5)
|
||||
page.setViewport(initialViewport)
|
||||
})
|
||||
|
||||
it('works on 404 error page', async () => {
|
||||
await page.goto('http://localhost:4001/en/404')
|
||||
await page.click('#search-input-container input[type="search"]')
|
||||
@@ -205,26 +218,43 @@ describe('platform specific content', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('card filters', () => {
|
||||
describe('code examples', () => {
|
||||
it('loads correctly', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
const shownCards = await page.$$('.js-filter-card:not(.d-none)')
|
||||
const shownNoResult = await page.$('.js-filter-card-no-results:not(.d-none)')
|
||||
const maxCards = await page.$eval('.js-filter-card-show-more', btn => parseInt(btn.dataset.jsFilterCardMax))
|
||||
expect(shownCards.length).toBe(maxCards)
|
||||
const shownCards = await page.$$('[data-testid=code-example-card]')
|
||||
const shownNoResult = await page.$('[data-testid=code-examples-no-results]')
|
||||
expect(shownCards.length).toBeGreaterThan(0)
|
||||
expect(shownNoResult).toBeNull()
|
||||
})
|
||||
|
||||
it('filters cards', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
await page.click('input.js-filter-card-filter')
|
||||
await page.type('input.js-filter-card-filter', 'issues')
|
||||
const shownCards = await page.$$('.js-filter-card:not(.d-none)')
|
||||
const showMoreClasses = await page.$eval('.js-filter-card-show-more', btn => Object.values(btn.classList))
|
||||
expect(showMoreClasses).toContain('d-none')
|
||||
await page.click('[data-testid=code-examples-input]')
|
||||
await page.type('[data-testid=code-examples-input]', 'issues')
|
||||
const shownCards = await page.$$('[data-testid=code-example-card]')
|
||||
expect(shownCards.length).toBeGreaterThan(1)
|
||||
})
|
||||
|
||||
it('shows more cards', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
const initialCards = await page.$$('[data-testid=code-example-card]')
|
||||
await page.click('[data-testid=code-examples-show-more]')
|
||||
const moreCards = await page.$$('[data-testid=code-example-card]')
|
||||
expect(moreCards.length).toBe(initialCards.length * 2)
|
||||
})
|
||||
|
||||
it('displays no result message', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
await page.click('[data-testid=code-examples-input]')
|
||||
await page.type('[data-testid=code-examples-input]', 'this should not work')
|
||||
const shownCards = await page.$$('[data-testid=code-example-card]')
|
||||
expect(shownCards.length).toBe(0)
|
||||
const noResultsMessage = await page.$('[data-testid=code-examples-no-results]')
|
||||
expect(noResultsMessage).not.toBeNull()
|
||||
})
|
||||
})
|
||||
|
||||
describe('filter cards', () => {
|
||||
it('works with select input', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions/guides')
|
||||
await page.select('.js-filter-card-filter-dropdown[name="type"]', 'overview')
|
||||
@@ -246,24 +276,6 @@ describe('card filters', () => {
|
||||
shownCardsAttrib.map(attrib => expect(attrib).toBe('overview'))
|
||||
expect(shownCards.length).toBeGreaterThan(0)
|
||||
})
|
||||
|
||||
it('shows more cards', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
const maxCards = await page.$eval('.js-filter-card-show-more', btn => parseInt(btn.dataset.jsFilterCardMax))
|
||||
await page.click('.js-filter-card-show-more')
|
||||
const shownCards = await page.$$('.js-filter-card:not(.d-none)')
|
||||
expect(shownCards.length).toBe(maxCards * 2)
|
||||
})
|
||||
|
||||
it('displays no result message', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
await page.click('input.js-filter-card-filter')
|
||||
await page.type('input.js-filter-card-filter', 'this should not work')
|
||||
const shownCards = await page.$$('.js-filter-card:not(.d-none)')
|
||||
expect(shownCards.length).toBe(0)
|
||||
const noResultsClasses = await page.$eval('.js-filter-card-no-results', elem => Object.values(elem.classList))
|
||||
expect(noResultsClasses).not.toContain('d-none')
|
||||
})
|
||||
})
|
||||
|
||||
describe('language banner', () => {
|
||||
@@ -312,7 +324,7 @@ describe('GraphQL Explorer', () => {
|
||||
describe('nextjs query param', () => {
|
||||
jest.setTimeout(60 * 1000)
|
||||
|
||||
it('conditionally renders through nextjs pipeline depending on FEATURE_NEXTJS value', async () => {
|
||||
it('landing page renders through nextjs pipeline depending on FEATURE_NEXTJS value', async () => {
|
||||
const flagVal = require('../../feature-flags.json').FEATURE_NEXTJS
|
||||
await page.goto('http://localhost:4001/en/actions?nextjs=')
|
||||
const IS_NEXTJS_PAGE = await page.evaluate(() => window.IS_NEXTJS_PAGE)
|
||||
@@ -320,12 +332,4 @@ describe('nextjs query param', () => {
|
||||
flagVal === true ? expect(nextWrapper).toBeDefined() : expect(nextWrapper).toBeNull()
|
||||
flagVal === true ? expect(IS_NEXTJS_PAGE).toBe(true) : expect(IS_NEXTJS_PAGE).toBe(false)
|
||||
})
|
||||
|
||||
it('does not render through nextjs pipeline when nextjs query param is missing', async () => {
|
||||
await page.goto('http://localhost:4001/en/actions')
|
||||
const nextWrapper = await page.$('#__next')
|
||||
const IS_NEXTJS_PAGE = await page.evaluate(() => window.IS_NEXTJS_PAGE)
|
||||
expect(nextWrapper).toBeNull()
|
||||
expect(IS_NEXTJS_PAGE).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user