Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
63
activepieces-fork/packages/tests-e2e/fixtures/index.ts
Normal file
63
activepieces-fork/packages/tests-e2e/fixtures/index.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { test as base } from '@playwright/test';
|
||||
import {
|
||||
AuthenticationPage,
|
||||
FlowsPage,
|
||||
BuilderPage,
|
||||
} from '../pages';
|
||||
import { signUp, AuthenticationResponse } from './users';
|
||||
import { DEFAULT_EMAIL, DEFAULT_PASSWORD } from '../global-setup';
|
||||
|
||||
type CustomFixtures = {
|
||||
authenticationPage: AuthenticationPage;
|
||||
flowsPage: FlowsPage;
|
||||
builderPage: BuilderPage;
|
||||
authenticatedPage: AuthenticationPage;
|
||||
users: {
|
||||
apiSignUp: () => Promise<AuthenticationResponse>;
|
||||
}
|
||||
};
|
||||
|
||||
export const test = base.extend<CustomFixtures>({
|
||||
// Override page fixture to automatically authenticate before each test
|
||||
page: async ({ page }, use) => {
|
||||
const authPage = new AuthenticationPage(page);
|
||||
|
||||
if (process.env.E2E_EMAIL && process.env.E2E_PASSWORD) {
|
||||
await authPage.signIn({
|
||||
email: process.env.E2E_EMAIL,
|
||||
password: process.env.E2E_PASSWORD,
|
||||
});
|
||||
} else {
|
||||
await authPage.signIn({
|
||||
email: DEFAULT_EMAIL,
|
||||
password: DEFAULT_PASSWORD,
|
||||
});
|
||||
}
|
||||
|
||||
await use(page);
|
||||
},
|
||||
|
||||
authenticationPage: async ({ page }, use) => {
|
||||
await use(new AuthenticationPage(page));
|
||||
},
|
||||
|
||||
flowsPage: async ({ page }, use) => {
|
||||
await use(new FlowsPage(page));
|
||||
},
|
||||
|
||||
builderPage: async ({ page }, use) => {
|
||||
await use(new BuilderPage(page));
|
||||
},
|
||||
|
||||
authenticatedPage: async ({ page }, use) => {
|
||||
await use(new AuthenticationPage(page));
|
||||
},
|
||||
|
||||
users: async ({ request, page }, use) => {
|
||||
await use({
|
||||
apiSignUp: async () => await signUp(request, page),
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export { expect } from '@playwright/test';
|
||||
50
activepieces-fork/packages/tests-e2e/fixtures/users.ts
Normal file
50
activepieces-fork/packages/tests-e2e/fixtures/users.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { faker } from '@faker-js/faker';
|
||||
import type { APIRequestContext, Page } from '@playwright/test';
|
||||
|
||||
export async function signUp(request: APIRequestContext, page: Page): Promise<AuthenticationResponse> {
|
||||
const signUpPayload = {
|
||||
email: faker.internet.email(),
|
||||
password: '12345678',
|
||||
firstName: 'Test',
|
||||
lastName: 'User',
|
||||
trackEvents: false,
|
||||
platformId: null,
|
||||
newsLetter: false,
|
||||
provider: UserIdentityProvider.EMAIL,
|
||||
};
|
||||
|
||||
const response = await request.post('/api/v1/authentication/sign-up', {
|
||||
data: signUpPayload,
|
||||
});
|
||||
|
||||
const authResponse = await response.json();
|
||||
|
||||
await page.addInitScript((tokenValue) => {
|
||||
localStorage.setItem('token', tokenValue);
|
||||
}, authResponse.token);
|
||||
return authResponse;
|
||||
}
|
||||
|
||||
// cant import from shared: https://www.checklyhq.com/docs/runtimes/#why-cant-i-import-any-npm-package-or-other-3rd-party-dependencies
|
||||
export enum UserIdentityProvider {
|
||||
EMAIL = 'EMAIL',
|
||||
GOOGLE = 'GOOGLE',
|
||||
SAML = 'SAML',
|
||||
JWT = 'JWT',
|
||||
}
|
||||
|
||||
export type AuthenticationResponse = {
|
||||
id: string;
|
||||
platformRole: string;
|
||||
status: string;
|
||||
externalId: string;
|
||||
platformId: string;
|
||||
verified: boolean;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
email: string;
|
||||
trackEvents: boolean;
|
||||
newsLetter: boolean;
|
||||
token: string;
|
||||
projectId: string;
|
||||
}
|
||||
Reference in New Issue
Block a user