console fill: labels match straight and curly quotes (Developer’s Advertising, the user’s identity); an App Privacy dialog step with no inputs (the definitions page) is passed with Next
This commit is contained in:
parent
0035931734
commit
18fde37b9b
4 changed files with 33 additions and 9 deletions
|
|
@ -238,7 +238,7 @@ describe.skipIf(!browser)('App Privacy: each data type set up from the real page
|
|||
expect(Object.keys(got).sort()).toEqual([...SIX_NAMES].sort());
|
||||
const c = await clicks(b);
|
||||
for (const never of ['?', 'Publish', 'Edit', 'Cancel', 'Back']) expect(c).not.toContain(never);
|
||||
expect(c.filter(x => x === 'Next')).toHaveLength(12);
|
||||
expect(c.filter(x => x === 'Next')).toHaveLength(18);
|
||||
expect(c.filter(x => x === 'Save')).toHaveLength(6);
|
||||
expect(log.lines).toContain('the Data Types section lists exactly the collected types of the config: storebound sets up each one');
|
||||
expect(log.lines).toContain('clicked "Set Up Purchase History" (navigation)');
|
||||
|
|
@ -297,7 +297,7 @@ describe.skipIf(!browser)('App Privacy: each data type set up from the real page
|
|||
expect(pj.controls).toContainEqual({ role: 'switch', name: 'Account identity', checked: false });
|
||||
await Bun.sleep(500);
|
||||
const c = await clicks(b);
|
||||
expect(c.filter(x => x === 'Next')).toHaveLength(2 * 2 + 1); // two types done, Device ID's first step only
|
||||
expect(c.filter(x => x === 'Next')).toHaveLength(2 * 3 + 1); // two types done (purposes, linked, definitions), Device ID's first step only
|
||||
expect(c).not.toContain('Publish');
|
||||
expect(c).not.toContain('?');
|
||||
await b.context.close();
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ const ROWS = [
|
|||
['Usage Data', 'Product Interaction', 'Product Interaction'],
|
||||
['Diagnostics', 'Crash Data', 'Crash Data'],
|
||||
];
|
||||
const PURPOSES = ['Third-Party Advertising', "Developer's Advertising or Marketing", 'Analytics', 'Product Personalization', 'App Functionality', 'Other Purposes'];
|
||||
const PURPOSES = ['Third-Party Advertising', 'Developer’s Advertising or Marketing', 'Analytics', 'Product Personalization', 'App Functionality', 'Other Purposes'];
|
||||
const q = new URLSearchParams(location.search);
|
||||
const unknown = q.get('unknown');
|
||||
const preset = Object.fromEntries(q.getAll('preset').map(v => { const [t, ps] = v.split(':'); return [t, ps ? ps.split('|') : []]; }));
|
||||
|
|
@ -68,7 +68,7 @@ function setUpDone(type, purposes) {
|
|||
a.innerHTML = `<p>${purposes.join(', ')}</p><button type="button" role="button">Edit</button>`;
|
||||
a.querySelector('button').addEventListener('click', () => openType(type));
|
||||
}
|
||||
// the per-type dialog: purposes > Next > linked > Next > tracking > Save
|
||||
// the per-type dialog: purposes > Next > linked > Next > definitions (text only, real console) > Next > tracking > Save
|
||||
function openType(type) {
|
||||
const low = type.toLowerCase();
|
||||
const d = document.createElement('dialog');
|
||||
|
|
@ -82,9 +82,10 @@ function openType(type) {
|
|||
+ PURPOSES.map((p, i) => `<div><input type="checkbox" id="purpose_${i}"><div><label for="purpose_${i}"><p>${p}</p><p>Description of ${p}</p></label></div></div>`).join('')
|
||||
+ `<div><button type="button">Cancel</button><button type="button" data-go="2">Next</button></div></div>`
|
||||
+ `<div data-p="2" hidden>${step2}<div><button type="button" data-go="1">Back</button><button type="button">Cancel</button><button type="button" data-go="3">Next</button></div></div>`
|
||||
+ `<div data-p="3" hidden>`
|
||||
+ `<div data-p="3" hidden><p>Let’s define two important terms before continuing.</p><h5>Tracking</h5><p>Linking data collected from your app with third-party data.</p><h5>Third-Party Data</h5><p>Data about a user collected from other companies.</p><div><button type="button" data-go="2">Back</button><button type="button">Cancel</button><button type="button" data-go="4">Next</button></div></div>`
|
||||
+ `<div data-p="4" hidden>`
|
||||
+ radio('tracking', 'yes', `<strong>Yes</strong>, we use ${low} for tracking purposes`) + radio('tracking', 'no', `<strong>No</strong>, we do not use ${low} for tracking purposes`)
|
||||
+ `<div><button type="button" data-go="2">Back</button><button type="button">Cancel</button><button type="button" data-save>Save</button></div></div></div>`;
|
||||
+ `<div><button type="button" data-go="3">Back</button><button type="button">Cancel</button><button type="button" data-save>Save</button></div></div></div>`;
|
||||
d.setAttribute('open', '');
|
||||
d.addEventListener('click', e => {
|
||||
const go = e.target.closest('[data-go]')?.getAttribute('data-go');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue