Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
a7f3361
LiveIntentAnalyticsAdapter: Include ad size when sending data to winn…
zeta-xiao Nov 19, 2025
d22039a
Merge branch 'master' into DATA-36553-include-ad-size-as-a-field-that…
zeta-xiao Nov 19, 2025
28ccb4e
Bump glob from 10.4.5 to 10.5.0 (#14170)
dependabot[bot] Nov 20, 2025
0e8539e
Bump axios from 1.9.0 to 1.13.2 (#14161)
dependabot[bot] Nov 20, 2025
e09bac7
LiveIntentAnalyticsAdapter: update test url to be encoded format
zeta-xiao Nov 20, 2025
668f2fe
CI: do not use browserstack for e2e tests (#14174)
dgirardi Nov 20, 2025
e5995dd
Core: Delete .circleci/config.yml (#14137)
patmmccann Nov 20, 2025
b92867b
CI: Automatic review assignment (#14176)
dgirardi Nov 20, 2025
8c5b2a0
CI: improve PR review assignment automation (#14177)
dgirardi Nov 20, 2025
bfa9fb8
CI: fix issue with PR review automation (#14179)
dgirardi Nov 20, 2025
7e1a7c9
sevioBidAdapter: send currency if this is set in the config (#14143)
petrican Nov 20, 2025
135ecb9
CI: bump chrome 109 to 113 and move it off browserstack (#14187)
dgirardi Nov 20, 2025
9e07ab9
Core: fix proxy identity issue in objectGuard by caching wrapped obje…
mosherBT Nov 20, 2025
2d039f7
StartioBidAdapter: Change the protocol from http to https (#14128)
SvenKoster Nov 20, 2025
705c1d7
Rename greenbids bid adapter spec file (#14191)
patmmccann Nov 20, 2025
adf81ba
SeenThis Brand Stories Rendering Module: initial release (fixed) (#14…
seenthis-alex Nov 20, 2025
d900387
Various modules: fix tests (#14194)
dgirardi Nov 21, 2025
72ca897
Set localIdentifier for browserstack tests (#14195)
dgirardi Nov 21, 2025
4519cd1
Screencore Bid Adapter: add endpointId parameter (#14169)
screencore-dev Nov 21, 2025
b35fe2c
Rubicon Bid Adapter: Remove PAAPI and Privacy Sandbox support (#14197)
apukh-magnite Nov 21, 2025
48001e2
fix bug in AmxBidAdapter userSync settings handling (#14200)
sneako Nov 24, 2025
4ee6fb6
Prebid 10.18.0 release
prebidjs-release Nov 24, 2025
c08b2be
Increment version to 10.19.0-pre
prebidjs-release Nov 24, 2025
3b7c942
CodeQL: scope JSON request check to bid adapters (#14189)
patmmccann Nov 24, 2025
7881c62
Onetag Adapter: remove screenLeft usage (#14184)
patmmccann Nov 24, 2025
8114fde
Core: test cookies can be set as part of cookiesAreEnabled (#14125)
dgirardi Nov 24, 2025
f3fd447
Optable RTD Module: Wait for Optable event on HandleRTD (#14178)
mosherBT Nov 24, 2025
1f0764c
Permutive modules: allow for vendorless consent / allow option to use…
patmmccann Nov 25, 2025
e9558aa
Core: override send dependency (#14185)
patmmccann Nov 25, 2025
8916ac2
Merge branch 'master' into DATA-36553-include-ad-size-as-a-field-that…
zeta-xiao Nov 25, 2025
efc9fe9
Build system: set lockFileVersion=2 (#14208)
dgirardi Nov 25, 2025
54a03a5
datablocks bid adapter: Remove colorDepth and availheight and width (…
patmmccann Nov 25, 2025
bbac9ca
Core: fix resizing of anchor slots (#14107)
dgirardi Nov 25, 2025
06cb210
yieldmo bid adapter: fix prebid adapter start delay (#14204)
ym-aaron Nov 25, 2025
6edf928
lock eslint version (#14210)
dgirardi Nov 26, 2025
78a4b02
fluct Add support for floor price retrieval via getFloor() (#14142)
s103ng Nov 26, 2025
8cc013d
LiveIntentAnalyticsAdapter: generate adsize using utils/parseSizesInput
zeta-xiao Nov 27, 2025
0748748
Merge branch 'master' into DATA-36553-include-ad-size-as-a-field-that…
zeta-xiao Nov 27, 2025
76ffea4
RTD Module: Fix spread operator preventing RTD changes from persistin…
pm-azhar-mulla Nov 27, 2025
55d6e71
Impactify Bid Adapter: Removing unused logger on onBidderError. (#14215)
filipeneves Nov 27, 2025
65ea7c7
Add oftmediaRtdProvider to the RTD module list (#14225)
arezitopedia Nov 28, 2025
cd46c0a
Merge branch 'master' into DATA-36553-include-ad-size-as-a-field-that…
zeta-xiao Nov 29, 2025
43a3583
Sharethrough Bid Adapter: drop supporting cdep (#14199)
krzysztofequativ Dec 1, 2025
97c37b6
Handle a case when getUserIds is not present (#14222)
pm-nitin-shirsat Dec 1, 2025
91627a6
ID5 Analytics module - support gzip compression of large events (#14129)
abazylewicz-id5 Dec 1, 2025
32bc0c6
Refactor native asset handling for datablocks and mediaforce (#14186)
patmmccann Dec 1, 2025
7b556c2
Attekmi: add RadiantFusion alias (#14223)
SmartHubSolutions Dec 1, 2025
5c18fed
clickioBidAdapter: add IAB GVL ID and TCFEU support (#14224)
ClickioTech Dec 1, 2025
56befd5
Merge branch 'master' into DATA-36553-include-ad-size-as-a-field-that…
zeta-xiao Dec 2, 2025
2f6b2e4
LiveIntentAnalyticsAdapter: fix bug
zeta-xiao Dec 2, 2025
955b817
Ogury Bid Adapter: sync from mobile-web-prebid (#14229)
RemyLespagnol Dec 2, 2025
020968e
sevioBidAdapter: adapter fix keywords to be sent as array (#14226)
petrican Dec 2, 2025
6658e93
Various Adapters: nullify banned device metrics (#14188)
patmmccann Dec 2, 2025
f4e7feb
WURFL RTD: Add low latency device detection (#14115)
lucor Dec 2, 2025
f411575
limelightDigital Bid Adapter: support get floor module (#14144)
RuzannaAvetisyan Dec 2, 2025
1234265
Flipp: update endpoint to not use cdn (#14232)
hasan-kanjee Dec 2, 2025
19c1ed8
Merge branch 'master' into DATA-36553-include-ad-size-as-a-field-that…
zeta-xiao Dec 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 0 additions & 12 deletions .circleci/config.yml

This file was deleted.

35 changes: 35 additions & 0 deletions .github/actions/install-deb/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Install deb
description: Download and install a .deb package
inputs:
url:
description: URL to the .deb file
required: true
name:
description: A local name for the package. Required if using this action multiple times in the same context.
default: package.deb
required: false

runs:
using: 'composite'
steps:
- name: Restore deb
id: deb-restore
uses: actions/cache/restore@v4
with:
path: "${{ runner.temp }}/${{ inputs.name }}"
key: ${{ inputs.url }}
- name: Download deb
if: ${{ steps.deb-restore.outputs.cache-hit != 'true' }}
shell: bash
run: |
wget --no-verbose "${{ inputs.url }}" -O "${{ runner.temp }}/${{ inputs.name }}"
- name: Cache deb
if: ${{ steps.deb-restore.outputs.cache-hit != 'true' }}
uses: actions/cache/save@v4
with:
path: "${{ runner.temp }}/${{ inputs.name }}"
key: ${{ inputs.url }}
- name: Install deb
shell: bash
run: |
sudo apt-get install -y --allow-downgrades "${{ runner.temp }}/${{ inputs.name }}"
23 changes: 23 additions & 0 deletions .github/actions/npm-ci/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: NPM install
description: Run npm install and cache dependencies

runs:
using: 'composite'
steps:
- name: Restore dependencies
id: restore-modules
uses: actions/cache/restore@v4
with:
path: "node_modules"
key: node_modules-${{ hashFiles('package-lock.json') }}
- name: Run npm ci
if: ${{ steps.restore-modules.outputs.cache-hit != 'true' }}
shell: bash
run: |
npm ci
- name: Cache dependencies
if: ${{ steps.restore-modules.outputs.cache-hit != 'true' }}
uses: actions/cache/save@v4
with:
path: "node_modules"
key: node_modules-${{ hashFiles('package-lock.json') }}
7 changes: 5 additions & 2 deletions .github/actions/wait-for-browserstack/action.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Wait for browserstack sessions
description: Wait until enough browserstack sessions have become available

inputs:
sessions:
description: Number of sessions needed to continue
default: "6"
runs:
using: 'composite'
steps:
Expand All @@ -14,7 +17,7 @@ runs:
queued=$(jq '.queued_sessions' <<< $status)
max_queued=$(jq '.queued_sessions_max_allowed' <<< $status)
spare=$(( ${max_running} + ${max_queued} - ${running} - ${queued} ))
required=6
required=${{ inputs.sessions }}
echo "Browserstack status: ${running} sessions running, ${queued} queued, ${spare} free"
(( ${required} > ${spare} ))
do
Expand Down
3 changes: 2 additions & 1 deletion .github/codeql/queries/jsonRequestContentType.ql
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ from Property prop
where
prop.getName() = "contentType" and
prop.getInit() instanceof StringLiteral and
prop.getInit().(StringLiteral).getStringValue() = "application/json"
prop.getInit().(StringLiteral).getStringValue() = "application/json" and
prop.getFile().getBaseName().matches("%BidAdapter.%")
select prop,
"application/json request type triggers preflight requests and may increase bidder timeouts"

60 changes: 60 additions & 0 deletions .github/workflows/PR-assignment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Assign PR reviewers
on:
pull_request_target:
types: [opened, synchronize, reopened]

jobs:
assign_reviewers:
name: Assign reviewers
runs-on: ubuntu-latest

steps:
- name: Generate app token
id: token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.PR_BOT_ID }}
private-key: ${{ secrets.PR_BOT_PEM }}

- name: Checkout
uses: actions/checkout@v5
with:
ref: refs/pull/${{ github.event.pull_request.number }}/head

- name: Install dependencies
uses: ./.github/actions/npm-ci
- name: Build
run: |
npx gulp build
- name: Install s3 client
run: |
npm install @aws-sdk/client-s3
- name: Get PR properties
id: get-props
uses: actions/github-script@v8
env:
AWS_ACCESS_KEY_ID: ${{ vars.PR_BOT_AWS_AK }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.PR_BOT_AWS_SAK }}
with:
github-token: ${{ steps.token.outputs.token }}
script: |
const getProps = require('./.github/workflows/scripts/getPRProperties.js')
const props = await getProps({
github,
context,
prNo: ${{ github.event.pull_request.number }},
reviewerTeam: '${{ vars.REVIEWER_TEAM }}',
engTeam: '${{ vars.ENG_TEAM }}',
authReviewTeam: '${{ vars.AUTH_REVIEWER_TEAM }}'
});
console.log('PR properties:', JSON.stringify(props, null, 2));
return props;
- name: Assign reviewers
if: ${{ !fromJSON(steps.get-props.outputs.result).review.ok }}
uses: actions/github-script@v8
with:
github-token: ${{ steps.token.outputs.token }}
script: |
const assignReviewers = require('./.github/workflows/scripts/assignReviewers.js')
const reviewers = await assignReviewers({github, context, prData: ${{ steps.get-props.outputs.result }} });
console.log('Assigned reviewers:', JSON.stringify(reviewers, null, 2));
87 changes: 52 additions & 35 deletions .github/workflows/browser-tests.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,10 @@
name: Run unit tests on all browsers
on:
workflow_call:
inputs:
chunks:
description: Number of chunks to split tests into
required: false
type: number
default: 1
build-cmd:
description: Build command, run once
required: false
type: string
test-cmd:
description: Test command, run once per chunk
required: true
type: string
timeout:
description: Timeout on test run
required: false
type: number
default: 10
outputs:
coverage:
description: Artifact name for coverage results
value: ${{ jobs.browser-tests.outputs.coverage }}
value: ${{ jobs.unit-tests.outputs.coverage }}
secrets:
BROWSERSTACK_USER_NAME:
description: "Browserstack user name"
Expand All @@ -33,15 +14,17 @@ jobs:
build:
uses: ./.github/workflows/build.yml
with:
build-cmd: ${{ inputs.build-cmd }}
build-cmd: npx gulp build

setup:
needs: build
name: "Setup environment"
name: "Define testing strategy"
runs-on: ubuntu-latest
outputs:
browsers: ${{ toJSON(fromJSON(steps.define.outputs.result).browsers) }}
latestBrowsers: ${{ toJSON(fromJSON(steps.define.outputs.result).latestBrowsers) }}
bstack-key: ${{ steps.bstack-save.outputs.name }}
bstack-sessions: ${{ fromJSON(steps.define.outputs.result).bsBrowsers }}
steps:
- name: Checkout
uses: actions/checkout@v5
Expand All @@ -55,23 +38,35 @@ jobs:
with:
script: |
const fs = require('node:fs/promises');
const browsers = require('./.github/workflows/browser_testing.json');
const excludeFromBstack = Object.values(browsers).map(browser => browser.bsName);
const browsers = Object.entries(
require('./.github/workflows/browser_testing.json')
).flatMap(([name, browser]) => {
browser = Object.assign({name, version: 'latest'}, browser);
const browsers = [browser];
const versions = browser.versions;
if (versions) {
delete browser.versions;
browsers.push(...Object.entries(versions).map(([version, def]) => Object.assign({}, browser, {version, ...def})))
}
return browsers;
})
const bstackBrowsers = Object.fromEntries(
// exlude "latest" version of browsers that we can test on GH actions
// exclude versions of browsers that we can test on GH actions
Object.entries(require('./browsers.json'))
.filter(([name, def]) => !excludeFromBstack.includes(def.browser) || def.browser_version !== 'latest')
.filter(([name, def]) => browsers.find(({bsName, version}) => bsName === def.browser && version === def.browser_version) == null)
)
const updatedBrowsersJson = JSON.stringify(bstackBrowsers, null, 2);
console.log("Using browsers.json:", updatedBrowsersJson);
console.log("Browsers to be tested directly on runners:", JSON.stringify(browsers, null, 2))
await fs.writeFile('./browsers.json', updatedBrowsersJson);
return {
hasBSBrowsers: Object.keys(bstackBrowsers).length > 0,
browsers: Object.entries(browsers).map(([name, def]) => Object.assign({name}, def))
bsBrowsers: Object.keys(bstackBrowsers).length,
browsers,
latestBrowsers: browsers.filter(browser => browser.version === 'latest')
}
- name: "Save working directory"
id: bstack-save
if: ${{ fromJSON(steps.define.outputs.result).hasBSBrowsers }}
if: ${{ fromJSON(steps.define.outputs.result).bsBrowsers > 0 }}
uses: ./.github/actions/save
with:
prefix: browserstack-
Expand All @@ -85,19 +80,40 @@ jobs:
built-key: ${{ needs.build.outputs.built-key }}
test-cmd: gulp test-build-logic

browser-tests:
e2e-tests:
needs: [setup, build]
name: "Browser: ${{ matrix.browser.name }}"
name: "E2E (browser: ${{ matrix.browser.wdioName }})"
strategy:
fail-fast: false
matrix:
browser: ${{ fromJSON(needs.setup.outputs.browsers) }}
uses:
./.github/workflows/run-tests.yml
with:
browser: ${{ matrix.browser.wdioName }}
built-key: ${{ needs.build.outputs.built-key }}
test-cmd: ${{ inputs.test-cmd }} --browsers ${{ matrix.browser.name }} ${{ matrix.browser.coverage && '--coverage' || '--no-coverage' }}
chunks: ${{ inputs.chunks }}
test-cmd: npx gulp e2e-test-nobuild --local
chunks: 1
runs-on: ${{ matrix.browser.runsOn || 'ubuntu-latest' }}
install-safari: ${{ matrix.browser.runsOn == 'macos-latest' }}
run-npm-install: ${{ matrix.browser.runsOn == 'windows-latest' }}
browserstack: false

unit-tests:
needs: [setup, build]
name: "Unit (browser: ${{ matrix.browser.name }} ${{ matrix.browser.version }})"
strategy:
fail-fast: false
matrix:
browser: ${{ fromJSON(needs.setup.outputs.browsers) }}
uses:
./.github/workflows/run-tests.yml
with:
install-deb: ${{ matrix.browser.deb }}
install-chrome: ${{ matrix.browser.chrome }}
built-key: ${{ needs.build.outputs.built-key }}
test-cmd: npx gulp test-only-nobuild --browsers ${{ matrix.browser.name }} ${{ matrix.browser.coverage && '--coverage' || '--no-coverage' }}
chunks: 8
runs-on: ${{ matrix.browser.runsOn || 'ubuntu-latest' }}

browserstack-tests:
Expand All @@ -108,9 +124,10 @@ jobs:
./.github/workflows/run-tests.yml
with:
built-key: ${{ needs.setup.outputs.bstack-key }}
test-cmd: ${{ inputs.test-cmd }} --browserstack --no-coverage
chunks: ${{ inputs.chunks }}
test-cmd: npx gulp test-only-nobuild --browserstack --no-coverage
chunks: 8
browserstack: true
browserstack-sessions: ${{ fromJSON(needs.setup.outputs.bstack-sessions) }}
secrets:
BROWSERSTACK_USER_NAME: ${{ secrets.BROWSERSTACK_USER_NAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
13 changes: 12 additions & 1 deletion .github/workflows/browser_testing.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,28 @@
{
"ChromeHeadless": {
"bsName": "chrome",
"coverage": true
"wdioName": "chrome",
"coverage": true,
"versions": {
"113.0": {
"coverage": false,
"chrome": "113.0.5672.0",
"name": "ChromeNoSandbox"
}
}
},
"EdgeHeadless": {
"bsName": "edge",
"wdioName": "msedge",
"runsOn": "windows-latest"
},
"SafariNative": {
"wdioName": "safari technology preview",
"bsName": "safari",
"runsOn": "macos-latest"
},
"FirefoxHeadless": {
"wdioName": "firefox",
"bsName": "firefox"
}
}
Loading
Loading