Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions e2e/acceptance/api-token.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@ import { http, HttpResponse } from 'msw';

test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
test.beforeEach(async ({ msw }) => {
let user = msw.db.user.create({
let user = await msw.db.user.create({
login: 'johnnydee',
name: 'John Doe',
email: 'john@doe.com',
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',
});

msw.db.apiToken.create({
await msw.db.apiToken.create({
user,
name: 'foo',
createdAt: '2017-08-01T12:34:56',
lastUsedAt: '2017-11-02T01:45:14',
});

msw.db.apiToken.create({
await msw.db.apiToken.create({
user,
name: 'BAR',
createdAt: '2017-11-19T17:59:22',
lastUsedAt: null,
expiredAt: '2017-12-19T17:59:22',
});

msw.db.apiToken.create({
await msw.db.apiToken.create({
user,
name: 'recently expired',
createdAt: '2017-08-01T12:34:56',
Expand Down Expand Up @@ -79,7 +79,7 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
await expect(page.locator('[data-test-api-token]')).toHaveCount(3);

await page.click('[data-test-api-token="1"] [data-test-revoke-token-button]');
expect(msw.db.apiToken.findMany({}).length, 'API token has been deleted from the backend database').toBe(2);
expect(msw.db.apiToken.findMany(null).length, 'API token has been deleted from the backend database').toBe(2);

await expect(page.locator('[data-test-api-token]')).toHaveCount(2);
await expect(page.locator('[data-test-api-token="2"]')).toBeVisible();
Expand Down Expand Up @@ -134,7 +134,7 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {

await page.click('[data-test-generate]');

let token = msw.db.apiToken.findFirst({ where: { name: { equals: 'the new token' } } })?.token;
let token = msw.db.apiToken.findFirst(q => q.where({ name: 'the new token' }))?.token;
expect(token, 'API token has been created in the backend database').toBeTruthy();

await expect(page.locator('[data-test-api-token="4"] [data-test-name]')).toHaveText('the new token');
Expand All @@ -152,7 +152,7 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
await page.click('[data-test-scope="publish-update"]');
await page.click('[data-test-generate]');

let token = msw.db.apiToken.findFirst({ where: { name: { equals: 'the new token' } } })?.token;
let token = msw.db.apiToken.findFirst(q => q.where({ name: 'the new token' }))?.token;
await expect(page.locator('[data-test-token]')).toHaveText(token);

// leave the API tokens page
Expand Down
22 changes: 12 additions & 10 deletions e2e/acceptance/categories.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ import { expect, test } from '@/e2e/helper';

test.describe('Acceptance | categories', { tag: '@acceptance' }, () => {
test('listing categories', async ({ page, msw, percy, a11y }) => {
msw.db.category.create({ category: 'API bindings' });
let algos = msw.db.category.create({ category: 'Algorithms' });
msw.db.crate.create({ categories: [algos] });
let async = msw.db.category.create({ category: 'Asynchronous' });
Array.from({ length: 15 }).forEach(() => msw.db.crate.create({ categories: [async] }));
msw.db.category.create({ category: 'Everything', crates_cnt: 1234 });
await msw.db.category.create({ category: 'API bindings' });
let algos = await msw.db.category.create({ category: 'Algorithms' });
await msw.db.crate.create({ categories: [algos] });
let async = await msw.db.category.create({ category: 'Asynchronous' });
for (let i = 0; i < 15; i++) {
await msw.db.crate.create({ categories: [async] });
}
await msw.db.category.create({ category: 'Everything', crates_cnt: 1234 });

await page.goto('/categories');

Expand All @@ -21,7 +23,7 @@ test.describe('Acceptance | categories', { tag: '@acceptance' }, () => {
});

test('category/:category_id index default sort is recent-downloads', async ({ page, msw, percy, a11y }) => {
msw.db.category.create({ category: 'Algorithms' });
await msw.db.category.create({ category: 'Algorithms' });
await page.goto('/categories/algorithms');

await expect(page.locator('[data-test-category-sort] [data-test-current-order]')).toHaveText('Recent Downloads');
Expand All @@ -31,8 +33,8 @@ test.describe('Acceptance | categories', { tag: '@acceptance' }, () => {
});

test('listing category slugs', async ({ page, msw }) => {
msw.db.category.create({ category: 'Algorithms', description: 'Crates for algorithms' });
msw.db.category.create({ category: 'Asynchronous', description: 'Async crates' });
await msw.db.category.create({ category: 'Algorithms', description: 'Crates for algorithms' });
await msw.db.category.create({ category: 'Asynchronous', description: 'Async crates' });
await page.goto('/category_slugs');

await expect(page.locator('[data-test-category-slug="algorithms"]')).toHaveText('algorithms');
Expand All @@ -45,7 +47,7 @@ test.describe('Acceptance | categories', { tag: '@acceptance' }, () => {
test.describe('Acceptance | categories (locale: de)', { tag: '@acceptance' }, () => {
test.use({ locale: 'de' });
test('listing categories', async ({ page, msw }) => {
msw.db.category.create({ category: 'Everything', crates_cnt: 1234 });
await msw.db.category.create({ category: 'Everything', crates_cnt: 1234 });
await page.goto('categories');

await expect(page.locator('[data-test-category="everything"] [data-test-crate-count]')).toHaveText('1.234 crates');
Expand Down
12 changes: 6 additions & 6 deletions e2e/acceptance/crate-deletion.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import { expect, test } from '@/e2e/helper';

test.describe('Acceptance | crate deletion', { tag: '@acceptance' }, () => {
test('happy path', async ({ page, msw }) => {
let user = msw.db.user.create();
let user = await msw.db.user.create();
await msw.authenticateAs(user);

let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate });
msw.db.crateOwnership.create({ crate, user });
let crate = await msw.db.crate.create({ name: 'foo' });
await msw.db.version.create({ crate });
await msw.db.crateOwnership.create({ crate, user });

await page.goto('/crates/foo');
await expect(page).toHaveURL('/crates/foo');
Expand All @@ -32,7 +32,7 @@ test.describe('Acceptance | crate deletion', { tag: '@acceptance' }, () => {
let message = 'Crate foo has been successfully deleted.';
await expect(page.locator('[data-test-notification-message="success"]')).toHaveText(message);

crate = msw.db.crate.findFirst({ where: { name: { equals: 'foo' } } });
expect(crate).toBeNull();
crate = msw.db.crate.findFirst(q => q.where({ name: 'foo' }));
expect(crate).toBeUndefined();
});
});
30 changes: 15 additions & 15 deletions e2e/acceptance/crate-dependencies.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { http, HttpResponse } from 'msw';

test.describe('Acceptance | crate dependencies page', { tag: '@acceptance' }, () => {
test('shows the lists of dependencies', async ({ page, msw, percy, a11y }) => {
loadFixtures(msw.db);
await loadFixtures(msw.db);

await page.goto('/crates/nanomsg/dependencies');
await expect(page).toHaveURL('/crates/nanomsg/0.6.1/dependencies');
Expand All @@ -19,8 +19,8 @@ test.describe('Acceptance | crate dependencies page', { tag: '@acceptance' }, ()
});

test('empty list case', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'nanomsg' });
msw.db.version.create({ crate, num: '0.6.1' });
let crate = await msw.db.crate.create({ name: 'nanomsg' });
await msw.db.version.create({ crate, num: '0.6.1' });

await page.goto('/crates/nanomsg/dependencies');

Expand Down Expand Up @@ -51,8 +51,8 @@ test.describe('Acceptance | crate dependencies page', { tag: '@acceptance' }, ()
});

test('shows an error page if version is not found', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '2.0.0' });
let crate = await msw.db.crate.create({ name: 'foo' });
await msw.db.version.create({ crate, num: '2.0.0' });

await page.goto('/crates/foo/1.0.0/dependencies');
await expect(page).toHaveURL('/crates/foo/1.0.0/dependencies');
Expand All @@ -63,8 +63,8 @@ test.describe('Acceptance | crate dependencies page', { tag: '@acceptance' }, ()
});

test('shows error message if loading of dependencies fails', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'foo' });
msw.db.version.create({ crate, num: '1.0.0' });
let crate = await msw.db.crate.create({ name: 'foo' });
await msw.db.version.create({ crate, num: '1.0.0' });

let error = HttpResponse.json({}, { status: 500 });
await msw.worker.use(http.get('/api/v1/crates/:crate_name/:version_num/dependencies', () => error));
Expand All @@ -78,16 +78,16 @@ test.describe('Acceptance | crate dependencies page', { tag: '@acceptance' }, ()
});

test('hides description if loading of dependency details fails', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'nanomsg' });
let version = msw.db.version.create({ crate, num: '0.6.1' });
let crate = await msw.db.crate.create({ name: 'nanomsg' });
let version = await msw.db.version.create({ crate, num: '0.6.1' });

let foo = msw.db.crate.create({ name: 'foo', description: 'This is the foo crate' });
msw.db.version.create({ crate: foo, num: '1.0.0' });
msw.db.dependency.create({ crate: foo, version, req: '^1.0.0', kind: 'normal' });
let foo = await msw.db.crate.create({ name: 'foo', description: 'This is the foo crate' });
await msw.db.version.create({ crate: foo, num: '1.0.0' });
await msw.db.dependency.create({ crate: foo, version, req: '^1.0.0', kind: 'normal' });

let bar = msw.db.crate.create({ name: 'bar', description: 'This is the bar crate' });
msw.db.version.create({ crate: bar, num: '2.3.4' });
msw.db.dependency.create({ crate: bar, version, req: '^2.0.0', kind: 'normal' });
let bar = await msw.db.crate.create({ name: 'bar', description: 'This is the bar crate' });
await msw.db.version.create({ crate: bar, num: '2.3.4' });
await msw.db.dependency.create({ crate: bar, version, req: '^2.0.0', kind: 'normal' });

let error = HttpResponse.json({}, { status: 500 });
await msw.worker.use(http.get('/api/v1/crates', () => error));
Expand Down
6 changes: 3 additions & 3 deletions e2e/acceptance/crate-following.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import { http, HttpResponse } from 'msw';

test.describe('Acceptance | Crate following', { tag: '@acceptance' }, () => {
async function prepare(msw, { skipLogin = false, following = false } = {}) {
let crate = msw.db.crate.create({ name: 'nanomsg' });
msw.db.version.create({ crate, num: '0.6.0' });
let crate = await msw.db.crate.create({ name: 'nanomsg' });
await msw.db.version.create({ crate, num: '0.6.0' });

let loggedIn = !skipLogin;
if (loggedIn) {
let followedCrates = following ? [crate] : [];
let user = msw.db.user.create({ followedCrates });
let user = await msw.db.user.create({ followedCrates });
await msw.authenticateAs(user);
}
}
Expand Down
4 changes: 2 additions & 2 deletions e2e/acceptance/crate-navtabs.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { Locator } from '@playwright/test';

test.describe('Acceptance | crate navigation tabs', { tag: '@acceptance' }, () => {
test('basic navigation between tabs works as expected', async ({ page, msw }) => {
let crate = msw.db.crate.create({ name: 'nanomsg' });
msw.db.version.create({ crate, num: '0.6.1' });
let crate = await msw.db.crate.create({ name: 'nanomsg' });
await msw.db.version.create({ crate, num: '0.6.1' });

const tabReadme = page.locator('[data-test-readme-tab] a');
const tabVersions = page.locator('[data-test-versions-tab] a');
Expand Down
Loading
Loading