Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
7d61cb6
Implement `suggest` and `step_to_goal` in `Stats.Funnel`
zoldar Oct 15, 2026
d577908
Add cursor icon component
zoldar Oct 15, 2026
300bf71
Implement wrapper for `Prima.Combobox`
zoldar Oct 15, 2026
f840b94
Add `display_name` virtual field to `DynamicStep` embed
zoldar Oct 15, 2026
435c64a
Switch `FunnelSettings.Form` to prima combobox and enable dynamic fun…
zoldar Oct 15, 2026
5ce3411
Update tests
zoldar Oct 15, 2026
2bb066a
Extract `Stats.Funnel` tests to a separate test module
zoldar Oct 15, 2026
8ebe0af
Remove unnecessary virtual `display_name` field from `DynamicStep`
zoldar Oct 19, 2026
8d14b18
Don't match on goals with exact same display name
zoldar Oct 19, 2026
be8b3d8
Make ordering in suggestions more predictable and exclude previous st…
zoldar Oct 19, 2026
0312442
Move modal backdrop to `FunnelSettings`
zoldar Oct 19, 2026
b591b11
Hide spinner when form is rendered
zoldar Oct 19, 2026
c07adb2
Filter static goals in consistence with exploration suggestions
zoldar Oct 19, 2026
7084483
Revert changes made to `StaticSearch`
zoldar Oct 19, 2026
3dc4437
DRY display name building logic
zoldar Oct 19, 2026
00808e2
Add identifiers and classes to Prima combobox component for easier te…
zoldar Oct 21, 2026
c6ab68c
Fix accounting for extra properties when evaluating ephemeral funnel
zoldar Oct 21, 2026
9b6d87e
Expand E2E helper controller with ability to fetch funnel and add dyn…
zoldar Oct 21, 2026
4341a37
Expand e2e fixtures with ability to fetch funnel
zoldar Oct 21, 2026
8fd803f
Convert no longer feasible LV tests to e2e tests
zoldar Oct 21, 2026
ebfecd5
Fix typespec
zoldar Oct 22, 2026
8f4896b
Don't consider journey when querying suggestions from stats
zoldar Oct 22, 2026
e9fc57b
Consider extra goal properties when evaluating ephemeral funnel
zoldar Oct 22, 2026
a384c97
Don't pass goals with extra properties to suggestion query
zoldar Oct 22, 2026
cc4291a
Remove constraint on repeating funnel steps
zoldar Oct 22, 2026
d2782cd
WIP
zoldar Oct 22, 2026
76bffd8
fix spinner
aerosol Oct 22, 2026
b7b481e
Don't close the modal on click on spinner layer
aerosol Oct 22, 2026
126770e
Update tests removing no longer valid ones
zoldar Oct 22, 2026
0aa453c
Remove forced triggering of suggestions refresh
zoldar Oct 22, 2026
728ff1b
Revert "Remove forced triggering of suggestions refresh"
zoldar Oct 22, 2026
373d83d
Revert "Remove constraint on repeating funnel steps"
zoldar Oct 22, 2026
c8ce179
Exclude repeating steps regardless if they are before or after
zoldar Oct 22, 2026
4a37edf
Avoid losing display name when storing static steps
zoldar Oct 22, 2026
bc1f3c4
Revert "Update tests removing no longer valid ones"
zoldar Oct 22, 2026
e64798f
Fix test
zoldar Oct 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions assets/js/liveview/live_socket.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import 'phoenix_html'
import { Socket } from 'phoenix'
import { LiveSocket } from 'phoenix_live_view'
import { Modal, Dropdown, Listbox } from 'prima'
import { Modal, Dropdown, Listbox, Combobox } from 'prima'
import topbar from 'topbar'
/* eslint-enable import/no-unresolved */

Expand All @@ -20,7 +20,15 @@ import MemberRows from './member-rows'
let csrfToken = document.querySelector("meta[name='csrf-token']")
let websocketUrl = document.querySelector("meta[name='websocket-url']")
if (csrfToken && websocketUrl) {
let Hooks = { Modal, Dropdown, Listbox, Confirm, CopySnippet, MemberRows }
let Hooks = {
Modal,
Dropdown,
Listbox,
Confirm,
CopySnippet,
MemberRows,
Combobox
}

Hooks.VerificationLifecycle = {
mounted() {
Expand Down
29 changes: 28 additions & 1 deletion e2e/tests/fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ type ImportedVisitors = {
date?: EventDate
}

type FunnelInputStep =
| string
| { event_name: string; currency?: string }
| { page_path: string; scroll_threshold?: string }

export type StatsEntry = Event | ImportedVisitors

export async function register({
Expand Down Expand Up @@ -504,7 +509,7 @@ export async function addFunnel({
request: APIRequestContext
domain: string
name: string
steps: string[]
steps: FunnelInputStep[]
}) {
const response = await request.post('/e2e-tests/funnel', {
headers: {
Expand All @@ -517,6 +522,28 @@ export async function addFunnel({
expect(response.ok()).toBeTruthy()
}

export async function getFunnel({
request,
domain,
name
}: {
request: APIRequestContext
domain: string
name: string
}) {
const response = await request.get('/e2e-tests/funnel', {
headers: {
'Content-Type': 'application/json',
Accept: 'application/json'
},
params: { domain: domain, name: name }
})

expect(response.ok()).toBeTruthy()

return await response.json()
}

export async function subscribeToPlan({
page,
planId
Expand Down
Loading
Loading