@epsilon-asi/actors 0.0.47 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/sites/upwork-com/upwork-com.actor.d.ts.map +1 -1
- package/dist/sites/upwork-com/upwork-com.actor.js +47 -16
- package/dist/sites/upwork-com/upwork-com.actor.js.map +1 -1
- package/package.json +1 -1
- package/src/core/ActorContext.ts +1 -1
- package/src/sites/upwork-com/upwork-com.actor.ts +48 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upwork-com.actor.d.ts","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAA2B,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAE2B,qBAAqB,EACnD,uBAAuB,EAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAEtF,eAAO,MAAM,cAAc;;
|
|
1
|
+
{"version":3,"file":"upwork-com.actor.d.ts","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAA2B,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAE2B,qBAAqB,EACnD,uBAAuB,EAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAEtF,eAAO,MAAM,cAAc;;yEA0DgB,qBAAqB,KAAQ,OAAO,CAAC,gBAAgB,EAAE,CAAC;qEAY3D,iBAAiB,KAAG,OAAO,CAAC;QACxD,UAAU,EAAE,gBAAgB,CAAC;QAC7B,YAAY,EAAE,uBAAuB,CAAA;KACxC,CAAC;yEAmBkC,qBAAqB,GAAG,qBAAqB,KAAG,OAAO,CAAC,sBAAsB,CAAC;EA+CzH,CAAC"}
|
|
@@ -56,41 +56,72 @@ export const upworkComActor = defineActor({
|
|
|
56
56
|
}),
|
|
57
57
|
tasks: {
|
|
58
58
|
test: async (context, input) => {
|
|
59
|
+
console.log('starting test task');
|
|
59
60
|
//@ts-ignore
|
|
60
61
|
await context.native.fileDialogs.selectFile(process.env.TEST);
|
|
62
|
+
console.log('moving mouse in test task');
|
|
61
63
|
await context.native.mouse.moveTo({ x: 100, y: 200 });
|
|
64
|
+
console.log('finished test task');
|
|
62
65
|
},
|
|
63
66
|
searchJobs: async (context, input = {}) => {
|
|
67
|
+
console.log('starting job search task');
|
|
64
68
|
const path = '/nx/s/universal-search/jobs?category2_uid=531770282580668420,531770282580668419,531770282580668418&client_hires=1-9,10-&payment_verified=1&q=%27rancher%27%20or%20%27terraform%27%20or%20%27gitops%27%20or%20%27azure%27%20or%20%27microsoft%20azure%27%20or%20%27cloud%20architect%27%20or%20%27ai%20architect%27%20or%20%27forward%20deployed%20engineer%27%20or%20%27aws%27%20or%20%27aks%27%20or%20%27eks%27%20or%20%27gke%27%20or%20%27cloud%20engineer%27%20or%20devops%20or%20kuberentes%20or%20%27platform%20engineer%27%20or%20%27infrastructure%20engineer%27%20or%20"google%20cloud%20platform"%20or%20"GCP"%20or%20"langsmith"%20or%20"langgraph"%20or%20"gemini%20enterprise"&sort=recency&user_location_match=1';
|
|
69
|
+
console.log('navigating to jobs search page');
|
|
65
70
|
await context.nav.goto(path, {});
|
|
66
|
-
|
|
71
|
+
console.log('parsing jobs search results');
|
|
72
|
+
const results = await parseUpworkSearchResults(context.session.page);
|
|
73
|
+
console.log('finished job search task');
|
|
74
|
+
return results;
|
|
67
75
|
},
|
|
68
76
|
getJob: async (_context, input) => {
|
|
77
|
+
console.log('starting get job task');
|
|
78
|
+
console.log('opening job details page');
|
|
69
79
|
await _context.nav.goto(`/jobs/~02${input.jobId}/`);
|
|
80
|
+
console.log('parsing job details content');
|
|
70
81
|
const jobDetails = parseUpworkJobDetailsPage(await _context.session.page.content());
|
|
82
|
+
console.log('opening job application page');
|
|
71
83
|
await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
|
|
84
|
+
console.log('parsing proposal questions');
|
|
72
85
|
const jobQuestions = await parseUpworkProposalQuestions(_context.session.page);
|
|
86
|
+
console.log('finished get job task');
|
|
73
87
|
return {
|
|
74
88
|
jobDetails,
|
|
75
89
|
jobQuestions
|
|
76
90
|
};
|
|
77
91
|
},
|
|
78
92
|
applyToJob: async (_context, input) => {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
try {
|
|
94
|
+
console.log('starting apply to job task');
|
|
95
|
+
console.log('opening apply page');
|
|
96
|
+
await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
|
|
97
|
+
console.log('Moving mouse to agency selector');
|
|
98
|
+
//await _context.cursor.move('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
|
|
99
|
+
console.log('Clicking agency selector');
|
|
100
|
+
await _context.cursor.click('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]');
|
|
101
|
+
console.log('Moving mouse to agency option');
|
|
102
|
+
//await _context.cursor.move('li[role="option"][tabindex="0"]')
|
|
103
|
+
await _context.cursor.click('li[role="option"][tabindex="0"]');
|
|
104
|
+
console.log('opening contractor selector');
|
|
105
|
+
//await _context.cursor.move('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
|
|
106
|
+
await _context.cursor.click('.up-fe-contractor-selector > [data-test="dropdown-toggle"]');
|
|
107
|
+
console.log('selecting contractor option');
|
|
108
|
+
//await _context.cursor.move('li[role="option"][tabindex="0"]')
|
|
109
|
+
await _context.cursor.click('li[role="option"][tabindex="0"]');
|
|
110
|
+
console.log('scrolling to rate increase selector');
|
|
111
|
+
await _context.cursor.scrollIntoView('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
|
|
112
|
+
console.log('opening rate increase selector');
|
|
113
|
+
//await _context.cursor.move('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
|
|
114
|
+
await _context.cursor.click('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
|
|
115
|
+
//await _context.cursor.move('li[role="option"][tabindex="0"]')
|
|
116
|
+
await _context.cursor.click('li[role="option"][tabindex="0"]');
|
|
117
|
+
console.log('filling proposal answers');
|
|
118
|
+
await fillUpworkProposalQuestions(_context.session.page, input.answers);
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
console.error(e);
|
|
122
|
+
console.log(e);
|
|
123
|
+
}
|
|
124
|
+
console.log('building apply result payload');
|
|
94
125
|
return {
|
|
95
126
|
coverLetter: input.answers.coverLetter ?? '',
|
|
96
127
|
rate: parseRate(input.rate)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upwork-com.actor.js","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAO7D,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAC,wBAAwB,EAAmB,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EACH,2BAA2B,EAC3B,4BAA4B,EAE/B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAC,yBAAyB,EAAmB,MAAM,2BAA2B,CAAC;AAEtF,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;IACtC,EAAE,EAAE,YAAY;IAChB,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,eAAe,CAAC;QAClB,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE;YACP,cAAc,EAAE,kBAAkB,CAAC,KAAK,CAAC,cAAc;YACvD,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC,YAAY;SACtD;QACD,WAAW,EAAE,EAAC,EAAE,EAAE,QAAQ,EAAC;QAC3B,QAAQ,EAAE;YACN,YAAY,EAAE,iBAAiB;YAC/B,iBAAiB,EAAE,KAAK;YACxB,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE;gBACJ,oBAAoB,EAAE,EAAE;gBACxB,gBAAgB,EAAE,EAAE;aACvB;SACJ;QACD,KAAK,EAAE;YACH;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ;gBAC3C,UAAU,EAAE,UAAU;aACzB;YACD;gBACI,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,kBAAkB;gBACrD,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ;gBAClD,wBAAwB,EAAE,KAAK;aAClC;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ;gBAC3C,UAAU,EAAE,UAAU;aACzB;YACD;gBACI,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM;gBACzC,MAAM,EAAE,IAAI;gBACZ,iBAAiB,EAAE,IAAI;gBACvB,aAAa,EAAE,KAAK;aACvB;SACJ;KACJ,CAAC;IACF,KAAK,EAAE;QACH,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC3B,YAAY;YACZ,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"upwork-com.actor.js","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/core/ActorContext.ts
CHANGED
|
@@ -69,58 +69,88 @@ export const upworkComActor = defineActor({
|
|
|
69
69
|
}),
|
|
70
70
|
tasks: {
|
|
71
71
|
test: async (context, input) => {
|
|
72
|
+
console.log('starting test task');
|
|
72
73
|
//@ts-ignore
|
|
73
74
|
await context.native.fileDialogs.selectFile(process.env.TEST)
|
|
74
|
-
|
|
75
|
+
console.log('moving mouse in test task');
|
|
76
|
+
await context.native.mouse.moveTo({x: 100, y: 200})
|
|
77
|
+
console.log('finished test task');
|
|
75
78
|
},
|
|
76
79
|
searchJobs: async (context, input: UpworkJobSearchFields = {}): Promise<UpworkJobListing[]> => {
|
|
80
|
+
console.log('starting job search task');
|
|
77
81
|
const path = '/nx/s/universal-search/jobs?category2_uid=531770282580668420,531770282580668419,531770282580668418&client_hires=1-9,10-&payment_verified=1&q=%27rancher%27%20or%20%27terraform%27%20or%20%27gitops%27%20or%20%27azure%27%20or%20%27microsoft%20azure%27%20or%20%27cloud%20architect%27%20or%20%27ai%20architect%27%20or%20%27forward%20deployed%20engineer%27%20or%20%27aws%27%20or%20%27aks%27%20or%20%27eks%27%20or%20%27gke%27%20or%20%27cloud%20engineer%27%20or%20devops%20or%20kuberentes%20or%20%27platform%20engineer%27%20or%20%27infrastructure%20engineer%27%20or%20"google%20cloud%20platform"%20or%20"GCP"%20or%20"langsmith"%20or%20"langgraph"%20or%20"gemini%20enterprise"&sort=recency&user_location_match=1';
|
|
78
82
|
|
|
83
|
+
console.log('navigating to jobs search page');
|
|
79
84
|
await context.nav.goto(path, {});
|
|
80
85
|
|
|
81
|
-
|
|
86
|
+
console.log('parsing jobs search results');
|
|
87
|
+
const results = await parseUpworkSearchResults(context.session.page as Page);
|
|
88
|
+
console.log('finished job search task');
|
|
89
|
+
return results;
|
|
82
90
|
},
|
|
83
91
|
getJob: async (_context, input: UpworkJobSelector): Promise<{
|
|
84
92
|
jobDetails: UpworkJobDetails,
|
|
85
93
|
jobQuestions: UpworkProposalQuestions
|
|
86
94
|
}> => {
|
|
95
|
+
console.log('starting get job task');
|
|
96
|
+
console.log('opening job details page');
|
|
87
97
|
await _context.nav.goto(`/jobs/~02${input.jobId}/`);
|
|
88
98
|
|
|
99
|
+
console.log('parsing job details content');
|
|
89
100
|
const jobDetails = parseUpworkJobDetailsPage(await _context.session.page.content());
|
|
90
101
|
|
|
102
|
+
console.log('opening job application page');
|
|
91
103
|
await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
|
|
92
104
|
|
|
105
|
+
console.log('parsing proposal questions');
|
|
93
106
|
const jobQuestions = await parseUpworkProposalQuestions(_context.session.page as Page);
|
|
107
|
+
console.log('finished get job task');
|
|
94
108
|
return {
|
|
95
109
|
jobDetails,
|
|
96
110
|
jobQuestions
|
|
97
111
|
}
|
|
98
112
|
},
|
|
99
113
|
applyToJob: async (_context, input: UpworkApplyToJobInput & UpworkProposalAnswers): Promise<UpworkApplyToJobResult> => {
|
|
114
|
+
try {
|
|
115
|
+
console.log('starting apply to job task');
|
|
116
|
+
console.log('opening apply page');
|
|
117
|
+
await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
|
|
100
118
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
119
|
+
console.log('Moving mouse to agency selector');
|
|
120
|
+
//await _context.cursor.move('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
|
|
121
|
+
console.log('Clicking agency selector');
|
|
122
|
+
await _context.cursor.click('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
|
|
105
123
|
|
|
106
|
-
|
|
107
|
-
|
|
124
|
+
console.log('Moving mouse to agency option');
|
|
125
|
+
//await _context.cursor.move('li[role="option"][tabindex="0"]')
|
|
126
|
+
await _context.cursor.click('li[role="option"][tabindex="0"]')
|
|
108
127
|
|
|
109
|
-
|
|
110
|
-
|
|
128
|
+
console.log('opening contractor selector');
|
|
129
|
+
//await _context.cursor.move('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
|
|
130
|
+
await _context.cursor.click('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
|
|
111
131
|
|
|
112
|
-
|
|
113
|
-
|
|
132
|
+
console.log('selecting contractor option');
|
|
133
|
+
//await _context.cursor.move('li[role="option"][tabindex="0"]')
|
|
134
|
+
await _context.cursor.click('li[role="option"][tabindex="0"]')
|
|
114
135
|
|
|
115
|
-
|
|
136
|
+
console.log('scrolling to rate increase selector');
|
|
137
|
+
await _context.cursor.scrollIntoView('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
|
|
116
138
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
139
|
+
console.log('opening rate increase selector');
|
|
140
|
+
//await _context.cursor.move('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
|
|
141
|
+
await _context.cursor.click('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
|
|
142
|
+
//await _context.cursor.move('li[role="option"][tabindex="0"]')
|
|
143
|
+
await _context.cursor.click('li[role="option"][tabindex="0"]')
|
|
121
144
|
|
|
122
|
-
|
|
145
|
+
console.log('filling proposal answers');
|
|
146
|
+
await fillUpworkProposalQuestions(_context.session.page as Page, input.answers)
|
|
123
147
|
|
|
148
|
+
}
|
|
149
|
+
catch(e){
|
|
150
|
+
console.error(e)
|
|
151
|
+
console.log(e);
|
|
152
|
+
}
|
|
153
|
+
console.log('building apply result payload');
|
|
124
154
|
return {
|
|
125
155
|
coverLetter: input.answers.coverLetter ?? '',
|
|
126
156
|
rate: parseRate(input.rate)
|