Skip to content

Commit

Permalink
Tests use Fenced Frames
Browse files Browse the repository at this point in the history
  • Loading branch information
barteklos committed Jan 10, 2022
1 parent a31d93b commit 8b70943
Show file tree
Hide file tree
Showing 19 changed files with 133 additions and 125 deletions.
17 changes: 8 additions & 9 deletions src/common/base_test.py
Expand Up @@ -33,15 +33,7 @@ def options(self) -> webdriver.ChromeOptions:
options.add_argument('--disable-gpu')
options.add_argument('--user-data-dir=/tmp/profile123')
options.add_argument('--user-agent=rtbfledgetests')
enable_features = [
# ver <= 96.x
'FledgeInterestGroups', 'FledgeInterestGroupAPI',
# ver >= 97.x
'InterestGroupStorage', 'AdInterestGroupAPI', 'Fledge'
]
options.add_argument(f"--enable-features={','.join(enable_features)}")
# TODO: at some point in the future FLEDGE won't work with disabled FencedFrames
options.add_argument('--disable-features=FencedFrames')
options.add_argument(f"--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge")
return options

def setUp(self) -> None:
Expand All @@ -66,3 +58,10 @@ def assertDriverContainsText(self, css_selector, text, timeout=5):
f'in given time {timeout} seconds.'
WebDriverWait(self.driver, timeout)\
.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, css_selector), text), exc_msg)

def assertDriverContainsFencedFrame(self, timeout=5):
exc_msg = f'Failed to find fenced frame in given time {timeout} seconds.'
WebDriverWait(self.driver, timeout) \
.until(EC.presence_of_element_located((By.TAG_NAME, 'fencedframe')), exc_msg)
fframe = self.driver.find_element_by_tag_name('fencedframe')
logger.info(f"fencedframe.src: {fframe.get_attribute('src')}")
15 changes: 11 additions & 4 deletions src/tests_basic/resources/publisher/index.html
Expand Up @@ -6,6 +6,9 @@
</head>
<body>

<h1>run ad auction</h1>
<div id="ad" style="width: 1500px; height: 1000px;"> Ad should be placed here</div>

<script type="module">
if (navigator.runAdAuction) {
const ar = await navigator.runAdAuction({
Expand All @@ -20,12 +23,16 @@
}
}
});
console.log("winning url " + ar);
const adDiv = document.getElementById('ad');
adDiv.innerHTML = "";
if (ar === null) {
document.write("No turtledove winner");
adDiv.appendChild(document.createTextNode("No turtledove winner"));
} else {
const iframe = document.createElement('iframe');
iframe.src = ar;
document.body.appendChild(iframe);
const fframe = document.createElement('fencedframe');
fframe.setAttribute('src', ar);
fframe.setAttribute('style', 'width: 100px; height: 100px');
adDiv.appendChild(fframe);
}
}

Expand Down
16 changes: 5 additions & 11 deletions src/tests_basic/test.py
Expand Up @@ -3,14 +3,10 @@

import logging

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

from common.utils import print_debug
from common.utils import log_exception
from common.mockserver import MockServer
from common.base_test import BaseTest
from common.mockserver import MockServer
from common.utils import log_exception
from common.utils import print_debug

logger = logging.getLogger(__file__)

Expand Down Expand Up @@ -39,7 +35,5 @@ def test__should_show_ad_jeff(self):
self.assertDriverContainsText('body', 'joined interest group')

self.driver.get('https://www.jefftk.com/test/td/auction.html')
WebDriverWait(self.driver, 5) \
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
logger.info(self.driver.page_source)
self.assertDriverContainsText('body', 'TC AD 1')
self.driver.find_element_by_tag_name('button').click()
self.assertDriverContainsFencedFrame()
20 changes: 12 additions & 8 deletions src/tests_daily_update/resources/seller/index.html
@@ -1,29 +1,33 @@
<h1>run ad auction</h1>
<h1>run ad auction</h1>
<div id="ad" style="width: 1500px; height: 1000px;"> Ad should be placed here</div>

<script>
if (!navigator.runAdAuction) {
document.write("your browser doesn't have runAdAuction -- do you need to set some flags?");
}
</script>

<script type=module>
<script type=module>
if (navigator.runAdAuction) {
const ar = await navigator.runAdAuction({
seller: 'https://fledge-tests.creativecdn.net:8202',
decisionLogicUrl: 'https://fledge-tests.creativecdn.net:8202/seller.js',
trustedScoringSignalsUrl: 'https://fledge-tests.creativecdn.net:8202/trusted-scoring.json',
interestGroupBuyers: ["https://fledge-tests.creativecdn.net:8201"],
auctionSignals: {key: "auction signals"},
sellerSignals: {key: "seller signals"},
perBuyerSignals: {"https://fledge-tests.creativecdn.net:8201": {key: "tc signals"}},
});

console.log("winning url " + ar);
const adDiv = document.getElementById('ad');
adDiv.innerHTML = "";
if (ar === null) {
document.write("No turtledove winner");
adDiv.appendChild(document.createTextNode("No turtledove winner"));
} else {
const iframe = document.createElement('iframe');
iframe.src = ar;
document.body.appendChild(iframe);
const fframe = document.createElement('fencedframe');
fframe.setAttribute('src', ar);
fframe.setAttribute('style', 'width: 100px; height: 100px');
adDiv.appendChild(fframe);
}
}
</script>
</script>
18 changes: 9 additions & 9 deletions src/tests_daily_update/test.py
Expand Up @@ -4,9 +4,7 @@
import logging
import time

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from assertpy import assert_that

from common.base_test import BaseTest
from common.mockserver import MockServer
Expand All @@ -32,9 +30,10 @@ def test__should_update(self):

# run auction
self.driver.get(seller_server.address)
WebDriverWait(self.driver, 5)\
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
self.assertDriverContainsText('body', 'TC AD 1')
self.assertDriverContainsFencedFrame()
report_win_signals = buyer_server.get_last_request("/reportWin").get_first_json_param('signals')
assert_that(report_win_signals.get('browserSignals').get('renderUrl')) \
.is_equal_to("https://fledge-tests.creativecdn.net:8201/ad-1.html")

# update interest group
self.driver.get(buyer_server.address + "/do_update.html")
Expand All @@ -46,6 +45,7 @@ def test__should_update(self):
# run auction again to check if the update was successful
# (note that now we expect a different ad to win)
self.driver.get(seller_server.address)
WebDriverWait(self.driver, 5) \
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
self.assertDriverContainsText('body', 'TC AD 2')
self.assertDriverContainsFencedFrame()
report_win_signals = buyer_server.get_last_request("/reportWin").get_first_json_param('signals')
assert_that(report_win_signals.get('browserSignals').get('renderUrl')) \
.is_equal_to("https://fledge-tests.creativecdn.net:8201/ad-2.html")
3 changes: 3 additions & 0 deletions src/tests_functional/resources/buyer/buyer.js
@@ -1,4 +1,7 @@
function generateBid(interestGroup, auctionSignals, perBuyerSignals, trustedBiddingSignals, browserSignals) {

console.log("!!!!!!!!!!!!!!!!!!!!!!!!! generateBid !!!!!!!!!!!!!!!!!!!!!!!!! generateBid ");

const ad = interestGroup.ads[0];
return {'ad': 'example',
'bid': ad.metadata.bid,
Expand Down
16 changes: 10 additions & 6 deletions src/tests_functional/resources/seller/index.html
@@ -1,4 +1,5 @@
<h1>run ad auction</h1>
<h1>run ad auction</h1>
<div id="ad" style="width: 1500px; height: 1000px;"> Ad should be placed here</div>

<script>
if (!navigator.runAdAuction) {
Expand All @@ -11,19 +12,22 @@ <h1>run ad auction</h1>
const ar = await navigator.runAdAuction({
seller: 'https://fledge-tests.creativecdn.net:8092',
decisionLogicUrl: 'https://fledge-tests.creativecdn.net:8092/seller.js',
trustedScoringSignalsUrl: 'https://fledge-tests.creativecdn.net:8092/trusted-scoring.json',
interestGroupBuyers: ["https://fledge-tests.creativecdn.net:8091"],
auctionSignals: {key: "auction signals"},
sellerSignals: {key: "seller signals"},
perBuyerSignals: {"https://fledge-tests.creativecdn.net:8091": {key: "tc signals"}},
});

console.log("winning url " + ar);
const adDiv = document.getElementById('ad');
adDiv.innerHTML = "";
if (ar === null) {
document.write("No turtledove winner");
adDiv.appendChild(document.createTextNode("No turtledove winner"));
} else {
const iframe = document.createElement('iframe');
iframe.src = ar;
document.body.appendChild(iframe);
const fframe = document.createElement('fencedframe');
fframe.setAttribute('src', ar);
fframe.setAttribute('style', 'width: 100px; height: 100px');
adDiv.appendChild(fframe);
}
}
</script>
7 changes: 1 addition & 6 deletions src/tests_functional/test.py
Expand Up @@ -4,9 +4,6 @@
import logging

from assertpy import assert_that
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

from common.base_test import BaseTest
from common.mockserver import MockServer
Expand Down Expand Up @@ -34,9 +31,7 @@ def test__should_show_ad_our(self):

with MeasureDuration("runAdAuction"):
self.driver.get(seller_server.address)
WebDriverWait(self.driver, 5)\
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
self.assertDriverContainsText('body', 'TC AD 1')
self.assertDriverContainsFencedFrame()

report_result_signals = seller_server.get_last_request("/reportResult").get_first_json_param('signals')
logger.info(f"reportResult() signals: {pretty_json(report_result_signals)}")
Expand Down
6 changes: 2 additions & 4 deletions src/tests_iframe/test.py
Expand Up @@ -12,7 +12,6 @@
from common.utils import MeasureDuration
from common.utils import log_exception
from common.utils import measure_time
from common.utils import pretty_json
from common.utils import print_debug

logger = logging.getLogger(__file__)
Expand All @@ -34,6 +33,5 @@ def test__should_show_ad_jeff_through_iframe(self):

with MeasureDuration("runAdAuction"):
self.driver.get('https://www.jefftk.com/test/td/auction.html')
WebDriverWait(self.driver, 5)\
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
self.assertDriverContainsText('body', 'TC AD 1')
self.driver.find_element_by_tag_name('button').click()
self.assertDriverContainsFencedFrame()
19 changes: 12 additions & 7 deletions src/tests_performance/resources/seller/index.html
@@ -1,12 +1,13 @@
<h1>run ad auction</h1>
<h1>run ad auction</h1>
<div id="ad" style="width: 1500px; height: 1000px;"> Ad should be placed here</div>

<script>
if (!navigator.runAdAuction) {
document.write("your browser doesn't have runAdAuction -- do you need to set some flags?");
}
</script>

<script type=module>
<script type=module>
if (navigator.runAdAuction) {
const ar = await navigator.runAdAuction({
seller: 'https://fledge-tests.creativecdn.net:9012',
Expand All @@ -18,12 +19,16 @@ <h1>run ad auction</h1>
perBuyerSignals: {"https://fledge-tests.creativecdn.net:9011": {key: "tc signals"}},
});

console.log("winning url " + ar);
const adDiv = document.getElementById('ad');
adDiv.innerHTML = "";
if (ar === null) {
document.write("No turtledove winner");
adDiv.appendChild(document.createTextNode("No turtledove winner"));
} else {
const iframe = document.createElement('iframe');
iframe.src = ar;
document.body.appendChild(iframe);
const fframe = document.createElement('fencedframe');
fframe.setAttribute('src', ar);
fframe.setAttribute('style', 'width: 100px; height: 100px');
adDiv.appendChild(fframe);
}
}
</script>
</script>
10 changes: 2 additions & 8 deletions src/tests_performance/test.py
Expand Up @@ -3,10 +3,6 @@

import logging

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

from common.base_test import BaseTest
from common.mockserver import MockServer
from common.utils import MeasureDuration
Expand All @@ -18,7 +14,7 @@
logger = logging.getLogger(__file__)


class FunctionalTest(BaseTest):
class PerformanceTest(BaseTest):

@print_debug
@measure_time
Expand All @@ -33,9 +29,7 @@ def test__check_nn_with_static_weights_computation_time(self):

with MeasureDuration("runAdAuction"):
self.driver.get(seller_server.address)
WebDriverWait(self.driver, 5)\
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
self.assertDriverContainsText('body', 'TC AD')
self.assertDriverContainsFencedFrame()

report_result_signals = seller_server.get_last_request("/reportResult").get_first_json_param('signals')
logger.info(f"reportResult() signals: {pretty_json(report_result_signals)}")
Expand Down
19 changes: 12 additions & 7 deletions src/tests_prevwins/resources/seller/index.html
@@ -1,12 +1,13 @@
<h1>run ad auction</h1>
<h1>run ad auction</h1>
<div id="ad" style="width: 1500px; height: 1000px;"> Ad should be placed here</div>

<script>
if (!navigator.runAdAuction) {
document.write("your browser doesn't have runAdAuction -- do you need to set some flags?");
}
</script>

<script type=module>
<script type=module>
if (navigator.runAdAuction) {
const seller_address = window.location.origin;
const buyer_address = new URLSearchParams(window.location.search).get('buyer');
Expand All @@ -16,12 +17,16 @@ <h1>run ad auction</h1>
interestGroupBuyers: [buyer_address],
});

console.log("winning url " + ar);
const adDiv = document.getElementById('ad');
adDiv.innerHTML = "";
if (ar === null) {
document.write("No turtledove winner");
adDiv.appendChild(document.createTextNode("No turtledove winner"));
} else {
const iframe = document.createElement('iframe');
iframe.src = ar;
document.body.appendChild(iframe);
const fframe = document.createElement('fencedframe');
fframe.setAttribute('src', ar);
fframe.setAttribute('style', 'width: 100px; height: 100px');
adDiv.appendChild(fframe);
}
}
</script>
</script>
10 changes: 2 additions & 8 deletions src/tests_prevwins/test.py
Expand Up @@ -6,17 +6,13 @@
import urllib.parse

from assertpy import assert_that
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

from common.base_test import BaseTest
from common.mockserver import MockServer
from common.utils import MeasureDuration
from common.utils import log_exception
from common.utils import measure_time
from common.utils import print_debug
from common.utils import pretty_json

logger = logging.getLogger(__file__)
here = os.path.dirname(__file__)
Expand All @@ -32,14 +28,12 @@ def joinAdInterestGroup(self, buyer_server, bid):
def runAdAuction(self, seller_server, buyer_server):
with MeasureDuration("runAdAuction"):
self.driver.get(seller_server.address + "?buyer=" + urllib.parse.quote_plus(buyer_server.address))
WebDriverWait(self.driver, 6) \
.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe')))
self.assertDriverContainsText('body', 'TC AD')
self.assertDriverContainsFencedFrame()

@print_debug
@measure_time
@log_exception
def test__tensorflow(self):
def test__prevwins(self):
with MockServer(0, 'resources/buyer') as buyer_server,\
MockServer(0, 'resources/seller') as seller_server:

Expand Down

0 comments on commit 8b70943

Please sign in to comment.