review feedback

This commit is contained in:
Max Schmitt 2025-02-11 14:24:55 +01:00
parent f944809c4a
commit 5764a76192
3 changed files with 7 additions and 12 deletions

View file

@ -14,6 +14,8 @@
* limitations under the License.
*/
import path from 'path';
import { Browser } from './browser';
import { BrowserContext, prepareBrowserContextParams } from './browserContext';
import { ChannelOwner } from './channelOwner';
@ -97,7 +99,7 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel> imple
ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
env: options.env ? envObjectToArray(options.env) : undefined,
channel: options.channel,
userDataDir,
userDataDir: path.isAbsolute(userDataDir) ? userDataDir : path.resolve(userDataDir),
};
return await this._wrapApiCall(async () => {
const result = await this._channel.launchPersistentContext(persistentParams);

View file

@ -189,7 +189,7 @@ export abstract class BrowserType extends SdkObject {
if (userDataDir) {
if (!path.isAbsolute(userDataDir))
userDataDir = path.resolve(userDataDir);
throw new Error('userDataDir must be an absolute path');
// Firefox bails if the profile directory does not exist, Chrome creates it. We ensure consistent behavior here.
if (!await existsAsync(userDataDir))
await fs.promises.mkdir(userDataDir, { recursive: true, mode: 0o700 });

View file

@ -103,16 +103,9 @@ it('should accept userDataDir', async ({ createUserDataDir, browserType }) => {
it('should accept relative userDataDir', async ({ createUserDataDir, browserType }) => {
const userDataDir = await createUserDataDir();
const cwd = process.cwd();
try {
console.log(userDataDir);
process.chdir(userDataDir);
const context = await browserType.launchPersistentContext('foobar');
expect(fs.readdirSync(path.join(userDataDir, 'foobar')).length).toBeGreaterThan(0);
await context.close();
} finally {
process.chdir(cwd);
}
const context = await browserType.launchPersistentContext(path.relative(process.cwd(), path.join(userDataDir, 'foobar')));
expect(fs.readdirSync(path.join(userDataDir, 'foobar')).length).toBeGreaterThan(0);
await context.close();
});
it('should restore state from userDataDir', async ({ browserType, server, createUserDataDir, isMac, browserName }) => {