Skip to content

Commit 206ca71

Browse files
committed
release 3.5.7
1 parent b4ca718 commit 206ca71

File tree

2 files changed

+175
-1
lines changed

2 files changed

+175
-1
lines changed

CHANGELOG.md

+174
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,177 @@
1+
## 3.5.7
2+
3+
Thanks all to those who contributed to make this release!
4+
5+
🐛 *Bug Fixes*
6+
* Bump playwright to 1.39.0 - run `npx playwright install` to install the browsers as starting from 1.39.0 browsers are not installed automatically (#3924) - by @KobeNguyenT
7+
* fix(playwright): some wait functions draw error due to switchTo iframe (#3918) - by @KobeNguyenT
8+
* fix(appium): AppiumTestDistribution/appium-device-farm requires 'platformName' (#3950) - by @rock-tran
9+
* fix: autologin with empty fetch (#3947) - by @andonary
10+
* fix(cli): customLocator draws error in dry-mode (#3940) - by @KobeNguyenT
11+
* fix: ensure docs include @returns Promise<void> where appropriate (#3954) - by @fwouts
12+
* fix: long text in data table cuts off (#3936) - by @KobeNguyenT
13+
```
14+
#language: de
15+
Funktionalität: Faker examples
16+
17+
Szenariogrundriss: Atualizar senha do usuário
18+
Angenommen que estou logado via REST com o usuário "<customer>"
19+
| protocol | https: |
20+
| hostname | https://cucumber.io/docs/gherkin/languages/ |
21+
22+
23+
Faker examples --
24+
Atualizar senha do usuário {"product":"{{vehicle.vehicle}}","customer":"Dr. {{name.findName}}","price":"{{commerce.price}}","cashier":"cashier 2"}
25+
On Angenommen: que estou logado via rest com o usuário "dr. {{name.find name}}"
26+
protocol | https:
27+
hostname | https://cucumber.io/docs/gherkin/languages/
28+
29+
Dr. {{name.findName}}
30+
✔ OK in 13ms
31+
32+
```
33+
* fix(playwright): move to waitFor (#3933) - by @KobeNguyenT
34+
* fix: relax grabCookie type (#3919) - by @KobeNguyenT
35+
* fix: proceedSee error when being called inside within (#3939) - by @KobeNguyenT
36+
* fix: rename haveRequestHeaders of ppt and pw helpers (#3937) - by @KobeNguyenT
37+
```
38+
Renamed haveRequestHeaders of Puppeteer, Playwright helper so that it would not confuse the REST helper.
39+
Puppeteer: setPuppeteerRequestHeaders
40+
Playwright: setPlaywrightRequestHeaders
41+
```
42+
* improvement: handle the way to load apifactory nicely (#3941) - by @KobeNguyenT
43+
```
44+
With this fix, we could now use the following syntax:
45+
46+
export = new Factory()
47+
.attr('name', () => faker.name.findName())
48+
.attr('job', () => 'leader');
49+
50+
export default new Factory()
51+
.attr('name', () => faker.name.findName())
52+
.attr('job', () => 'leader');
53+
54+
modules.export = new Factory()
55+
.attr('name', () => faker.name.findName())
56+
.attr('job', () => 'leader');
57+
```
58+
59+
📖 *Documentation*
60+
* docs(appium): update to v2 (#3932) - by @KobeNguyenT
61+
* docs: improve BDD Gherkin docs (#3938) - by @KobeNguyenT
62+
* Other docs improvements
63+
64+
🛩️ *Features*
65+
* feat(puppeteer): support trace recording - by @KobeNguyenT
66+
```
67+
[Trace Recording Customization]
68+
Trace recording provides complete information on test execution and includes screenshots, and network requests logged during run. Traces will be saved to output/trace
69+
70+
trace: enables trace recording for failed tests; trace are saved into output/trace folder
71+
keepTraceForPassedTests: - save trace for passed tests
72+
```
73+
* feat: expect helper (#3923) - by @KobeNguyenT
74+
```
75+
* This helper allows performing assertions based on Chai.
76+
*
77+
* ### Examples
78+
*
79+
* Zero-configuration when paired with other helpers like REST, Playwright:
80+
*
81+
* ```js
82+
* // inside codecept.conf.js
83+
*{
84+
* helpers: {
85+
* Playwright: {...},
86+
* ExpectHelper: {},
87+
* }
88+
89+
Expect Helper
90+
#expectEqual
91+
#expectNotEqual
92+
#expectContain
93+
#expectNotContain
94+
#expectStartsWith
95+
#expectNotStartsWith
96+
#expectEndsWith
97+
#expectNotEndsWith
98+
#expectJsonSchema
99+
#expectHasProperty
100+
#expectHasAProperty
101+
#expectToBeA
102+
#expectToBeAn
103+
#expectMatchRegex
104+
#expectLengthOf
105+
#expectTrue
106+
#expectEmpty
107+
#expectFalse
108+
#expectAbove
109+
#expectBelow
110+
#expectLengthAboveThan
111+
#expectLengthBelowThan
112+
#expectLengthBelowThan
113+
#expectDeepMembers
114+
#expectDeepIncludeMembers
115+
#expectDeepEqualExcluding
116+
#expectLengthBelowThan
117+
```
118+
* feat: run-workers with multiple browsers output folders - by @KobeNguyenT
119+
- ![Screenshot 2023-11-04 at 10 49 56](https://github.com/codeceptjs/CodeceptJS/assets/7845001/8eaecc54-de14-4597-b148-1e087bec3c76)
120+
- ![Screenshot 2023-11-03 at 15 56 38](https://github.com/codeceptjs/CodeceptJS/assets/7845001/715aed17-3535-48df-80dd-84f7024f08e3)
121+
* feat: introduce new Playwright methods - by @hatufacci
122+
```
123+
- grabCheckedElementStatus
124+
- grabDisabledElementStatus
125+
```
126+
* feat: gherkin supports i18n (#3934) - by @KobeNguyenT
127+
```
128+
#language: de
129+
Funktionalität: Checkout-Prozess
130+
Um Produkte zu kaufen
131+
Als Kunde
132+
Möchte ich in der Lage sein, mehrere Produkte zu kaufen
133+
134+
@i18n
135+
Szenariogrundriss: Bestellrabatt
136+
Angenommen ich habe ein Produkt mit einem Preis von <price>$ in meinem Warenkorb
137+
Und der Rabatt für Bestellungen über $20 beträgt 10 %
138+
Wenn ich zur Kasse gehe
139+
Dann sollte ich den Gesamtpreis von "<total>" $ sehen
140+
141+
Beispiele:
142+
| price | total |
143+
| 10 | 10.0 |
144+
```
145+
* feat(autoLogin): improve the check method (#3935) - by @KobeNguyenT
146+
```
147+
Instead of asserting on page elements for the current user in check, you can use the session you saved in fetch
148+
149+
autoLogin: {
150+
enabled: true,
151+
saveToFile: true,
152+
inject: 'login',
153+
users: {
154+
admin: {
155+
login: async (I) => { // If you use async function in the autoLogin plugin
156+
const phrase = await I.grabTextFrom('#phrase')
157+
I.fillField('username', 'admin'),
158+
I.fillField('password', 'password')
159+
I.fillField('phrase', phrase)
160+
},
161+
check: (I, session) => {
162+
// Throwing an error in `check` will make CodeceptJS perform the login step for the user
163+
if (session.profile.email !== [email protected]) {
164+
throw new Error ('Wrong user signed in');
165+
}
166+
},
167+
}
168+
}
169+
}
170+
Scenario('login', async ( {I, login} ) => {
171+
await login('admin') // you should use `await`
172+
})
173+
```
174+
1175
## 3.5.6
2176

3177
Thanks all to those who contributed to make this release!

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codeceptjs",
3-
"version": "3.5.6",
3+
"version": "3.5.7",
44
"description": "Supercharged End 2 End Testing Framework for NodeJS",
55
"keywords": [
66
"acceptance",

0 commit comments

Comments
 (0)