c122bd5664
Document Umami as the sole analytics platform, remove Rybbit proxy and tracker code, and classify public page traffic with discovery_channel for adm SEO/GEO dashboards. Co-authored-by: Cursor <cursoragent@cursor.com>
143 lines
3.8 KiB
JavaScript
143 lines
3.8 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import vm from 'node:vm';
|
|
|
|
import {
|
|
appendDiscoveryPropagationParams,
|
|
buildInlineDiscoveryResolverScript,
|
|
classifyDiscoveryTrafficSource,
|
|
DISCOVERY_QUERY_PARAM,
|
|
DISCOVERY_SOURCE_QUERY_PARAM,
|
|
} from './mindspace-analytics-discovery.mjs';
|
|
|
|
test('classifies common SEO referrers', () => {
|
|
assert.deepEqual(
|
|
classifyDiscoveryTrafficSource({
|
|
referrer: 'https://www.google.com/search?q=demo',
|
|
}),
|
|
{
|
|
discovery_channel: 'seo',
|
|
discovery_source: 'google',
|
|
referrer_host: 'google.com',
|
|
},
|
|
);
|
|
assert.deepEqual(
|
|
classifyDiscoveryTrafficSource({
|
|
referrer: 'https://www.baidu.com/s?wd=demo',
|
|
}),
|
|
{
|
|
discovery_channel: 'seo',
|
|
discovery_source: 'baidu',
|
|
referrer_host: 'baidu.com',
|
|
},
|
|
);
|
|
});
|
|
|
|
test('classifies common GEO referrers', () => {
|
|
assert.deepEqual(
|
|
classifyDiscoveryTrafficSource({
|
|
referrer: 'https://chatgpt.com/c/abc',
|
|
}),
|
|
{
|
|
discovery_channel: 'geo',
|
|
discovery_source: 'chatgpt',
|
|
referrer_host: 'chatgpt.com',
|
|
},
|
|
);
|
|
assert.deepEqual(
|
|
classifyDiscoveryTrafficSource({
|
|
referrer: 'https://www.perplexity.ai/search/demo',
|
|
}),
|
|
{
|
|
discovery_channel: 'geo',
|
|
discovery_source: 'perplexity',
|
|
referrer_host: 'perplexity.ai',
|
|
},
|
|
);
|
|
});
|
|
|
|
test('prefers explicit discovery query params for iframe propagation', () => {
|
|
assert.deepEqual(
|
|
classifyDiscoveryTrafficSource({
|
|
discoveryChannel: 'seo',
|
|
discoverySource: 'google',
|
|
referrer: 'https://m.tkmind.cn/u/alice/pages/demo',
|
|
pageHost: 'm.tkmind.cn',
|
|
}),
|
|
{
|
|
discovery_channel: 'seo',
|
|
discovery_source: 'google',
|
|
referrer_host: 'm.tkmind.cn',
|
|
},
|
|
);
|
|
});
|
|
|
|
test('falls back to server referrer hint when browser referrer is same-origin', () => {
|
|
assert.deepEqual(
|
|
classifyDiscoveryTrafficSource({
|
|
referrer: 'https://m.tkmind.cn/u/alice/pages/demo',
|
|
pageHost: 'm.tkmind.cn',
|
|
}),
|
|
{
|
|
discovery_channel: 'direct',
|
|
discovery_source: 'direct',
|
|
referrer_host: '',
|
|
},
|
|
);
|
|
});
|
|
|
|
test('appendDiscoveryPropagationParams only propagates seo or geo channels', () => {
|
|
const seoUrl = appendDiscoveryPropagationParams('/u/alice/pages/demo?view=raw', {
|
|
discovery_channel: 'seo',
|
|
discovery_source: 'google',
|
|
});
|
|
assert.match(seoUrl, new RegExp(`${DISCOVERY_QUERY_PARAM}=seo`));
|
|
assert.match(seoUrl, new RegExp(`${DISCOVERY_SOURCE_QUERY_PARAM}=google`));
|
|
|
|
const directUrl = appendDiscoveryPropagationParams('/u/alice/pages/demo?view=raw', {
|
|
discovery_channel: 'direct',
|
|
discovery_source: 'direct',
|
|
});
|
|
assert.equal(directUrl, '/u/alice/pages/demo?view=raw');
|
|
});
|
|
|
|
test('inline discovery resolver matches server-side classification from referrer hint', () => {
|
|
const result = vm.runInNewContext(
|
|
`(${buildInlineDiscoveryResolverScript('https://www.google.com/search?q=demo')})()`,
|
|
{
|
|
URL,
|
|
URLSearchParams,
|
|
location: {
|
|
hostname: 'm.tkmind.cn',
|
|
search: '',
|
|
},
|
|
document: { referrer: '' },
|
|
},
|
|
);
|
|
assert.deepEqual(JSON.parse(JSON.stringify(result)), {
|
|
discovery_channel: 'seo',
|
|
discovery_source: 'google',
|
|
referrer_host: 'google.com',
|
|
});
|
|
});
|
|
|
|
test('inline discovery resolver reads propagated query params inside iframe', () => {
|
|
const result = vm.runInNewContext(
|
|
`(${buildInlineDiscoveryResolverScript('')})()`,
|
|
{
|
|
URL,
|
|
URLSearchParams,
|
|
location: {
|
|
hostname: 'm.tkmind.cn',
|
|
search: '?view=raw&memind_discovery=geo&memind_discovery_source=chatgpt',
|
|
},
|
|
document: { referrer: 'https://m.tkmind.cn/u/alice/pages/demo' },
|
|
},
|
|
);
|
|
assert.deepEqual(JSON.parse(JSON.stringify(result)), {
|
|
discovery_channel: 'geo',
|
|
discovery_source: 'chatgpt',
|
|
referrer_host: '',
|
|
});
|
|
});
|