Skip to content

Commit a501d7f

Browse files
committed
Fix queue opening video, tests
Event handler order changed, need to make sure we have priority to avoid going to video Tests: - Add timeouts (Nebula throttels with 429) - Fix new casing for login button - Fix default page title
1 parent a0161f7 commit a501d7f

4 files changed

Lines changed: 31 additions & 36 deletions

File tree

.github/workflows/node.js.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,18 @@ jobs:
108108

109109
- name: Clear jest cache
110110
run: npx jest --clear-cache
111-
# - name: Run tests on beta
112-
# run: xvfb-run --auto-servernum npm run test:ee -- --ci
113-
# continue-on-error: ${{ github.event_name != 'schedule' }}
114-
# id: betatest
115-
# env:
116-
# YT_API_KEY: ${{ secrets.YOUTUBE_KEY }}
117-
# NEBULA_PASS: ${{ secrets.NEBULA_PASS }}
118-
# NEBULA_USER: ${{ secrets.NEBULA_USER }}
119-
# NEBULA_BASE: https://beta.nebula.app
120-
# - name: Emit warning if beta test failed
121-
# if: ${{ steps.betatest.outcome == 'failure' }}
122-
# run: echo "::warning::Beta tests failed"
111+
- name: Run tests on beta
112+
run: xvfb-run --auto-servernum npm run test:ee -- --ci
113+
continue-on-error: ${{ github.event_name != 'schedule' }}
114+
id: betatest
115+
env:
116+
YT_API_KEY: ${{ secrets.YOUTUBE_KEY }}
117+
NEBULA_PASS: ${{ secrets.NEBULA_PASS }}
118+
NEBULA_USER: ${{ secrets.NEBULA_USER }}
119+
NEBULA_BASE: https://beta.nebula.app
120+
- name: Emit warning if beta test failed
121+
if: ${{ steps.betatest.outcome == 'failure' }}
122+
run: echo "::warning::Beta tests failed"
123123

124124
coverage:
125125
name: Coverage

src/scripts/content/nebula/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const nebula = async () => {
2929
document.addEventListener(loadPrefix, doVideoActions);
3030
document.addEventListener(xhrPrefix, doVideoActions);
3131
document.body.addEventListener('mouseover', hover);
32-
document.body.addEventListener('click', click);
32+
document.body.addEventListener('click', click, { capture: true });
3333
doVideoActions();
3434

3535
// inject web content script

tests/integration/queue.ts

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ beforeAll(async () => {
1212
await page.click('.CookieConsent-Button');
1313
});
1414

15-
describe('videos page', () => {
16-
beforeEach(maybeLogin(async () => {
17-
await page.goto(`${__NEBULA_BASE__}/videos`);
18-
await page.waitForSelector(videoSelector);
19-
}));
20-
21-
afterEach(async () => {
22-
await page.evaluate(() => window.localStorage.clear());
23-
});
15+
beforeEach(maybeLogin(async () => {
16+
await page.goto(`${__NEBULA_BASE__}/videos`);
17+
await page.waitForSelector(videoSelector);
18+
console.log(expect.getState().currentTestName);
19+
}));
20+
21+
afterEach(async () => {
22+
await page.evaluate(() => window.localStorage.removeItem('enhancer-queue'));
23+
await page.waitForTimeout(2000);
24+
});
2425

26+
describe('videos page', () => {
2527
test('hover video adds queue button', async () => {
2628
const vid = await page.waitForSelector(videoSelector);
2729
await (await vid.$('img')).hover();
@@ -68,15 +70,6 @@ describe('videos page', () => {
6870
});
6971

7072
describe('queue', () => {
71-
beforeEach(maybeLogin(async () => {
72-
await page.goto(`${__NEBULA_BASE__}/videos`);
73-
await page.waitForSelector(videoSelector);
74-
}));
75-
76-
afterEach(async () => {
77-
await page.evaluate(() => window.localStorage.clear());
78-
});
79-
8073
test('can clear queue', async () => {
8174
await addToQueue(3);
8275
await expectQueueLength().toBe(3);
@@ -119,7 +112,7 @@ describe('queue', () => {
119112
const t = await page.evaluate((sel, n) => document.querySelector(`${sel} .element:nth-child(${n}) .title`).textContent, queueSelector, num);
120113
// titles in nebula are weird...
121114
// e.g. https://nebula.app/videos/extra-history-vlad-the-impaler-lies-extra-history contains extra space that is stripped in document title
122-
await page.waitForFunction(() => document.title.indexOf('Loading') === -1 && document.title.indexOf('Nebula | Nebula') === -1, { timeout: 5000 });
115+
await page.waitForFunction(() => document.title.indexOf('Loading') === -1 && document.title !== 'Nebula', { timeout: 5000 });
123116
await expect(page.title()).resolves.toContain(t.replace(/\s+/g, ' '));
124117
await expect(page.evaluate(sel => document.querySelector(`${sel} .top .title`).textContent, queueSelector)).resolves.toBe(t);
125118
await expect(page.evaluate(sel => document.querySelector(`${sel} .top .no`).textContent, queueSelector)).resolves.toBe(`${num}`);
@@ -165,7 +158,7 @@ describe('queue', () => {
165158
await page.click(`${queueSelector} .top .share`);
166159
const url = await page.evaluate(() => document.querySelector<HTMLInputElement>('.enhancer-queue-share input[type="text"]').value);
167160
const before = await titles();
168-
await page.evaluate(() => window.localStorage.clear());
161+
await page.evaluate(() => window.localStorage.removeItem('enhancer-queue'));
169162

170163
await page.goto(url);
171164
await page.waitForSelector(queueSelector);
@@ -178,7 +171,7 @@ describe('queue', () => {
178171
await page.click(`${queueSelector} .top .share`);
179172
const url = await page.evaluate(() => document.querySelector<HTMLInputElement>('.enhancer-queue-share input[type="text"]').value);
180173
const before = await titles();
181-
await page.evaluate(() => window.localStorage.clear());
174+
await page.evaluate(() => window.localStorage.removeItem('enhancer-queue'));
182175

183176
await page.evaluate(hash => window.location.hash = hash, url.slice(url.indexOf('#')));
184177
await page.waitForTimeout(100);

tests/shared.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ export const login = async (force = false) => {
3838
email: __NEBULA_USER__,
3939
password: __NEBULA_PASS__,
4040
});
41-
await expect(page).toClick(`${formSelector} button`, { text: 'Sign In' });
42-
await page.waitForSelector('[href="/account"]'); // wait until logged in
41+
await expect(page).toClick(`${formSelector} button`, { text: 'Sign in' });
42+
await page.waitForResponse('https://api.watchnebula.com/api/v1/authorization/'); // wait until logged in
43+
await page.waitForSelector('[href="/account"]');
44+
await page.waitForTimeout(1000);
4345
};
4446

4547
export const maybeLogin = (cb: () => Promise<void>) => async () => {

0 commit comments

Comments
 (0)