0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-30 19:41:46 +01:00
posthog/cypress/support/helpers.js
2021-04-08 13:40:29 -07:00

54 lines
1.5 KiB
JavaScript

import React from 'react'
import { mount } from '@cypress/react'
import { Provider } from 'react-redux'
import { getContext, useValues } from 'kea'
import { initKea } from '~/initKea'
import { GlobalStyles } from '~/GlobalStyles'
import { userLogic } from 'scenes/userLogic'
import { preflightLogic } from 'scenes/PreflightCheck/logic'
import posthog from 'posthog-js'
import { toParams } from '~/lib/utils'
export const mountPage = (component) => {
initKea()
return mount(
<Provider store={getContext().store}>
<GlobalStyles />
<WaitUntilEssentialLogicsAreMounted>{component}</WaitUntilEssentialLogicsAreMounted>
</Provider>
)
}
function WaitUntilEssentialLogicsAreMounted({ children }) {
const { user } = useValues(userLogic)
const { preflight } = useValues(preflightLogic)
return user && preflight ? children : null
}
export const setLocation = (path, params = null) => {
let qs = ''
if (params) {
qs = '?' + toParams(params)
}
window.history.replaceState(null, '', path + qs)
}
export const getSearchParameters = ({ request }) => {
const searchParams = new URL(request.url).searchParams
const result = {}
for (const [key, value] of searchParams.entries()) {
result[key] = value
}
return result
}
export const mockPosthog = () => {
cy.stub(posthog)
posthog.people = { set: () => {} }
posthog.onFeatureFlags = (callback) => {
callback(given.featureFlags || [])
}
}