helloadhavan/github_issues huggingface dataset:
Repository: huggingface/transformers
Pull request: More small vllm fixes

# What does this PR do?
- BC for check model inputs

Changed files:
filename: src/transformers/utils/generic.py
patch: @@ -940,6 +940,14 @@ def wrapper(self, *args, **kwargs):
     return wrapper
 
 
+# bc for check_model_inputs:
+
+
+def check_model_inputs(func):
+    logger.warning_once("The `check_model_inputs` decorator is deprecated in favor of `merge_with_config_defaults`.")
+    return merge_with_config_defaults(func)
+
+
 class GeneralInterface(MutableMapping):
     """
     Dict-like object keeping track of a class-wide mapping, as well as a local one. Allows to have library-wide
Repository: nodejs/node
Pull request: test: wait for reattach before initial break on restart

`restart` can return to the prompt before the debugger reattaches and emits the
initial break. That leaves a race in these tests, which still flakes on macOS
unusual-path runs.

This change waits for `Debugger attached.` and the prompt before
`waitForInitialBreak()`.

CI failed logs:
- test/parallel/test-debugger-run-after-quit-restart.js:61
  - https://github.com/nodejs/node/actions/runs/23221018730
- test/parallel/test-debugger-preserve-breaks.js:32
  - https://github.com/nodejs/node/actions/runs/21915213108

Refs: https://github.com/nodejs/node/issues/61762

Changed files:
filename: test/parallel/test-debugger-preserve-breaks.js
patch: @@ -29,6 +29,8 @@ const script = path.relative(process.cwd(), scriptFullPath);
     await cli.stepCommand('c'); // hit line 3
     assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 3 });
     await cli.command('restart');
+    await cli.waitFor(/Debugger attached\./);
+    await cli.waitForPrompt();
     await cli.waitForInitialBreak();
     assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 1 });
     await cli.stepCommand('c');

filename: test/parallel/test-debugger-run-after-quit-restart.js
patch: @@ -58,6 +58,8 @@ const path = require('path');
       );
     })
     .then(() => cli.command('restart'))
+    .then(() => cli.waitFor(/Debugger attached\./))
+    .then(() => cli.waitForPrompt())
     .then(() => cli.waitForInitialBreak())
     .then(() => {
       assert.deepStrictEqual(
Repository: rust-lang/rust
Pull request: library/test: always enable unstable features for miri

The unstable features of the `test` crate used to be default-enabled,
and manually disabled when building the beta and stable channels. Commit
dae8ea92a733 flipped that to default-disabled, only enabled for nightly
and dev channels.

However, this broke miri testing on the beta/stable channels, because it
also uses unstable features -- which should be fine to enable just for
its own sysroot build. Now the `test` build script makes that happen by
noticing the `MIRI_CALLED_FROM_SETUP` environment variable.


Changed files:
filename: library/test/build.rs
patch: @@ -2,11 +2,16 @@ fn main() {
     println!("cargo:rerun-if-changed=build.rs");
     println!("cargo:rustc-check-cfg=cfg(enable_unstable_features)");
 
-    let rustc = std::env::var("RUSTC").unwrap_or_else(|_| "rustc".into());
-    let version = std::process::Command::new(rustc).arg("-vV").output().unwrap();
-    let stdout = String::from_utf8(version.stdout).unwrap();
+    // Miri testing uses unstable features, so always enable that for its sysroot.
+    // Otherwise, only enable unstable if rustc looks like a nightly or dev build.
+    let enable_unstable_features = std::env::var("MIRI_CALLED_FROM_SETUP").is_ok() || {
+        let rustc = std::env::var("RUSTC").unwrap_or_else(|_| "rustc".into());
+        let version = std::process::Command::new(rustc).arg("-vV").output().unwrap();
+        let stdout = String::from_utf8(version.stdout).unwrap();
+        stdout.contains("nightly") || stdout.contains("dev")
+    };
 
-    if stdout.contains("nightly") || stdout.contains("dev") {
+    if enable_unstable_features {
         println!("cargo:rustc-cfg=enable_unstable_features");
     }
 }
Repository: facebook/react
Pull request: [flags] Turn on `enableViewTransition` in OSS `react-test-renderer`

Just to get OSS builds in a consistent state. It's still dynamic in www and off in native-fb

Changed files:
filename: packages/shared/forks/ReactFeatureFlags.test-renderer.js
patch: @@ -60,7 +60,7 @@ export const enableEagerAlternateStateNodeCleanup: boolean = true;
 export const enableYieldingBeforePassive: boolean = true;
 
 export const enableThrottledScheduling: boolean = false;
-export const enableViewTransition: boolean = false;
+export const enableViewTransition: boolean = true;
 export const enableGestureTransition: boolean = false;
 export const enableScrollEndPolyfill: boolean = true;
 export const enableSuspenseyImages: boolean = false;
Repository: vercel/next.js
Pull request: [react-sync] Allow locking in manual sync

Allows pointing the installed, vendored React at the currently vendored in source e.g. 
```json
"react-server-dom-turbopack": "file:packages/next/src/compiled/react-server-dom-turbopack",
"react-server-dom-turbopack-experimental": "file:packages/next/src/compiled/react-server-dom-turbopack-experimental",
"react-server-dom-webpack": "file:packages/next/src/compiled/react-server-dom-webpack",
"react-server-dom-webpack-experimental": "file:packages/next/src/compiled/react-server-dom-webpack-experimental",
```

This is mostly useful if you quickly want to check a manual edit to React without having `types-and-precompiled` scream at you.

Changed files:
filename: packages/next/taskfile.js
patch: @@ -1457,7 +1457,11 @@ export async function copy_vendor_react(task_) {
     // TODO-APP: remove unused fields from package.json and unused files
     function overridePackageName(source) {
       const json = JSON.parse(source)
-      json.name = json.name + '-' + channel
+      // avoid infinite suffix addition in case the package name already has the suffix
+      // e.g. if we install from src/compiled instead of npm registry.
+      if (!json.name.endsWith(`-${channel}`)) {
+        json.name = json.name + '-' + channel
+      }
       return JSON.stringify(
         {
           name: json.name,
Repository: ollama/ollama
Pull request: mlx: don't default to affine quantization for unquantized models

Otherwise the BF16 version of models trigger segfaults when they call into quantized kernels.

Changed files:
filename: x/imagegen/safetensors/loader.go
patch: @@ -37,9 +37,11 @@ func QuantizationParams(quantization string) (groupSize, bits int, mode string)
 	case "MXFP8":
 		// Microsoft MX FP8: group_size=32, bits=8, E4M3 scales (no qbias)
 		return 32, 8, "mxfp8"
-	case "FP8", "Q8", "INT8", "":
+	case "FP8", "Q8", "INT8":
 		// 8-bit quantization with affine mode (default for quantized models)
 		return 64, 8, "affine"
+	case "":
+		return 0, 0, ""
 	default:
 		return 32, 8, "affine" // Default to affine
 	}

filename: x/mlxrunner/model/quant.go
patch: @@ -17,8 +17,10 @@ func QuantizationParams(quantization string) (groupSize, bits int, mode string)
 		return 32, 4, "affine"
 	case "MXFP8":
 		return 32, 8, "mxfp8"
-	case "FP8", "Q8", "INT8", "":
+	case "FP8", "Q8", "INT8":
 		return 64, 8, "affine"
+	case "":
+		return 0, 0, ""
 	default:
 		return 32, 8, "affine"
 	}
Repository: rust-lang/rust
Pull request: [perf] Revert FastISel patch

<!-- homu-ignore:start -->
*[View all comments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust/pull/154511)*
<!-- homu-ignore:end -->

This caused a significant compile-time regression for debug builds.

There is another change (https://github.com/llvm/llvm-project/pull/186723) that mitigates that regression, but not fully. Revert it for now.

Changed files:
filename: src/llvm-project
patch: @@ -1 +1 @@
-Subproject commit 05918363362b439b9b0bced3daa14badd75da790
+Subproject commit 1cb4e3833c1919c2e6fb579a23ac0e2b22587b7e
Repository: ollama/ollama
Pull request: mlxrunner: Fix duplicate log prefixes and reduce log noise

Pass subprocess stdout/stderr through to the parent's stderr directly instead of re-wrapping each line with slog. The subprocess already writes structured slog output, so the re-wrapping produced nested timestamps, levels, and message fields that were hard to read.

Also downgrade verbose KV cache debug logs to trace level.

Changed files:
filename: x/mlxrunner/cache/cache.go
patch: @@ -3,8 +3,7 @@
 package cache
 
 import (
-	"log/slog"
-
+	"github.com/ollama/ollama/logutil"
 	"github.com/ollama/ollama/x/mlxrunner/mlx"
 )
 
@@ -113,7 +112,7 @@ func (c *RotatingKVCache) Update(keys, values *mlx.Array) (*mlx.Array, *mlx.Arra
 }
 
 func (c *RotatingKVCache) concat(keys, values *mlx.Array) (newK *mlx.Array, newV *mlx.Array) {
-	slog.Debug("(*RotatingKVCache).concat", "keys_dim", keys.Dims(), "values_dim", values.Dims(), "offset", c.offset, "idx", c.idx, "max_size", c.maxSize)
+	logutil.Trace("(*RotatingKVCache).concat", "keys_dim", keys.Dims(), "values_dim", values.Dims(), "offset", c.offset, "idx", c.idx, "max_size", c.maxSize)
 	if c.keys == nil {
 		c.keys, c.values = keys.Clone(), values.Clone()
 		mlx.Pin(c.keys, c.values)
@@ -140,7 +139,7 @@ func (c *RotatingKVCache) concat(keys, values *mlx.Array) (newK *mlx.Array, newV
 }
 
 func (c *RotatingKVCache) update(keys, values *mlx.Array) (*mlx.Array, *mlx.Array) {
-	slog.Debug("(*RotatingKVCache).update", "keys_dim", keys.Dims(), "values_dim", values.Dims(), "offset", c.offset, "idx", c.idx, "max_size", c.maxSize)
+	logutil.Trace("(*RotatingKVCache).update", "keys_dim", keys.Dims(), "values_dim", values.Dims(), "offset", c.offset, "idx", c.idx, "max_size", c.maxSize)
 	B, H, L, Dk, Dv := keys.Dim(0), keys.Dim(1), keys.Dim(2), keys.Dim(3), values.Dim(3)
 
 	prev := c.offset

filename: x/mlxrunner/client.go
patch: @@ -119,16 +119,13 @@ func NewClient(modelName string) (*Client, error) {
 	stdout, _ := cmd.StdoutPipe()
 	stderr, _ := cmd.StderrPipe()
 	go func() {
-		scanner := bufio.NewScanner(stdout)
-		for scanner.Scan() {
-			slog.Info("mlx-runner", "msg", scanner.Text())
-		}
+		io.Copy(os.Stderr, stdout) //nolint:errcheck
 	}()
 	go func() {
 		scanner := bufio.NewScanner(stderr)
 		for scanner.Scan() {
 			line := scanner.Text()
-			slog.Warn("mlx-runner", "msg", line)
+			fmt.Fprintln(os.Stderr, line)
 			c.lastErrLock.Lock()
 			c.lastErr = line
 			c.lastErrLock.Unlock()
Repository: nodejs/node
Pull request: src: improve EC JWK import performance

```
./node benchmark/crypto/create-keyobject.js keyFormat=jwk-public n=1000000 keyType=ec
```

| Branch | ops/sec |
|---|---|
| main | 76,259 |
| improve-ec-jwk-import | 168,920 |

All EC JWK import supported curves go through the optimized branch but I left the old one in just in case.

Changed files:
filename: deps/ncrypto/ncrypto.cc
patch: @@ -3538,8 +3538,38 @@ bool ECKeyPointer::setPublicKey(const ECPointPointer& pub) {
 bool ECKeyPointer::setPublicKeyRaw(const BignumPointer& x,
                                    const BignumPointer& y) {
   if (!key_) return false;
-  return EC_KEY_set_public_key_affine_coordinates(
-             key_.get(), x.get(), y.get()) == 1;
+  const EC_GROUP* group = EC_KEY_get0_group(key_.get());
+  if (group == nullptr) return false;
+
+  // For curves with cofactor h=1, use EC_POINT_oct2point +
+  // EC_KEY_set_public_key instead of EC_KEY_set_public_key_affine_coordinates.
+  // The latter internally calls EC_KEY_check_key() which performs a scalar
+  // multiplication (n*Q) for order validation — redundant when h=1 since every
+  // on-curve point already has order n. EC_POINT_oct2point validates the point
+  // is on the curve, which is sufficient. For curves with h!=1, fall back to
+  // the full check.
+  auto cofactor = BignumPointer::New();
+  if (!cofactor || !EC_GROUP_get_cofactor(group, cofactor.get(), nullptr) ||
+      !cofactor.isOne()) {
+    return EC_KEY_set_public_key_affine_coordinates(
+               key_.get(), x.get(), y.get()) == 1;
+  }
+
+  // Field element byte length: ceil(degree_bits / 8).
+  size_t field_len = (EC_GROUP_get_degree(group) + 7) / 8;
+  // Build an uncompressed point: 0x04 || x || y, each padded to field_len.
+  size_t uncompressed_len = 1 + 2 * field_len;
+  auto buf = DataPointer::Alloc(uncompressed_len);
+  if (!buf) return false;
+  unsigned char* ptr = static_cast<unsigned char*>(buf.get());
+  ptr[0] = POINT_CONVERSION_UNCOMPRESSED;
+  x.encodePaddedInto(ptr + 1, field_len);
+  y.encodePaddedInto(ptr + 1 + field_len, field_len);
+
+  auto point = ECPointPointer::New(group);
+  if (!point) return false;
+  if (!point.setFromBuffer({ptr, uncompressed_len}, group)) return false;
+  return EC_KEY_set_public_key(key_.get(), point.get()) == 1;
 }
 
 bool ECKeyPointer::setPrivateKey(const BignumPointer& priv) {
Repository: vercel/next.js
Pull request: Skip catch-error-react-compiler test to unblock CI

https://github.com/vercel/next.js/actions/runs/23170738194/job/67327462789#step:36:318 is holding up CI, including release. Cause is not from `catchError` PR, it's just that the test has discovered missing support of Next.js for Pages + React 17/18 + React compiler. Will work in parallel.

Changed files:
filename: test/e2e/app-dir/catch-error/catch-error-react-compiler.test.ts
patch: @@ -1,6 +1,12 @@
 import { nextTestSetup } from 'e2e-utils'
 
-describe('app-dir - unstable_catchError with react compiler', () => {
+// FIXME: If NEXT_TEST_REACT_VERSION is set, skip the test for now. Need to address react/compiler-runtime
+// compatibility with React below 19.
+// _describe for cleaner git history.
+const isReact18 = parseInt(process.env.NEXT_TEST_REACT_VERSION) === 18
+const _describe = isReact18 ? describe.skip : describe
+
+_describe('app-dir - unstable_catchError with react compiler', () => {
   const { next, isNextDev } = nextTestSetup({
     files: __dirname,
     nextConfig: {
Repository: rust-lang/rust
Pull request: Update LLVM to 22.1.2

Fixes https://github.com/rust-lang/rust/issues/154101.

Changed files:
filename: src/llvm-project
patch: @@ -1 +1 @@
-Subproject commit 41f177ed26a5252a30ea6090a4da66ce0a96bf44
+Subproject commit 05918363362b439b9b0bced3daa14badd75da790
Repository: ollama/ollama
Pull request: app: open app instead of always navigating to / on connect


Changed files:
filename: app/cmd/app/app.go
patch: @@ -397,8 +397,8 @@ func checkUserLoggedIn(uiServerPort int) bool {
 // handleConnectURLScheme fetches the connect URL and opens it in the browser
 func handleConnectURLScheme() {
 	if checkUserLoggedIn(uiServerPort) {
-		slog.Info("user is already logged in, opening settings instead")
-		sendUIRequestMessage("/")
+		slog.Info("user is already logged in, opening app instead")
+		showWindow(wv.webview.Window())
 		return
 	}
 
@@ -466,6 +466,8 @@ func handleURLSchemeInCurrentInstance(urlSchemeRequest string) {
 	if isConnect {
 		handleConnectURLScheme()
 	} else {
-		sendUIRequestMessage("/")
+		if wv.webview != nil {
+			showWindow(wv.webview.Window())
+		}
 	}
 }

filename: app/cmd/app/app_darwin.m
patch: @@ -24,27 +24,14 @@ - (void)application:(NSApplication *)application openURLs:(NSArray<NSURL *> *)ur
     for (NSURL *url in urls) {
         if ([url.scheme isEqualToString:@"ollama"]) {
             NSString *path = url.path;
-            if (!path || [path isEqualToString:@""]) {
-                // For URLs like ollama://settings (without triple slash),
-                // the "settings" part is parsed as the host, not the path.
-                // We need to convert it to a path by prepending "/"
-                if (url.host && ![url.host isEqualToString:@""]) {
-                    path = [@"/" stringByAppendingString:url.host];
-                } else {
-                    path = @"/";
-                }
-            }
-            
-            if ([path isEqualToString:@"/connect"] || [url.host isEqualToString:@"connect"]) {
+
+            if (path && ([path isEqualToString:@"/connect"] || [url.host isEqualToString:@"connect"])) {
                 // Special case: handle connect by opening browser instead of app
                 handleConnectURL();
             } else {
                 // Set app to be active and visible
                 [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
                 [NSApp activateIgnoringOtherApps:YES];
-                
-                // Open the path with the UI
-                [self uiRequest:path];
             }
             
             break;

filename: app/cmd/app/app_windows.go
patch: @@ -147,7 +147,9 @@ func handleURLSchemeRequest(urlScheme string) {
 	if isConnect {
 		handleConnectURLScheme()
 	} else {
-		sendUIRequestMessage("/")
+		if wv.webview != nil {
+			showWindow(wv.webview.Window())
+		}
 	}
 }
Repository: ollama/ollama
Pull request: cmd/config: install web search plugin to user-level extensions dir

The previous approach installed the plugin into the openclaw npm package's extensions directory. On WSL, files on /mnt/c appear as mode 777 (world-writable), causing openclaw's security check to block all plugins from that path.


Changed files:
filename: cmd/config/openclaw.go
patch: @@ -608,16 +608,16 @@ func clearSessionModelOverride(primary string) {
 
 const webSearchNpmPackage = "@ollama/openclaw-web-search"
 
-// ensureWebSearchPlugin installs the openclaw-web-search extension into the OpenClaw
-// extensions directory if it isn't already present. Returns true if the extension
-// is available (either already installed or just installed).
+// ensureWebSearchPlugin installs the openclaw-web-search extension into the
+// user-level extensions directory (~/.openclaw/extensions/) if it isn't already
+// present. Returns true if the extension is available.
 func ensureWebSearchPlugin() bool {
-	extDir := openclawExtensionsDir()
-	if extDir == "" {
+	home, err := os.UserHomeDir()
+	if err != nil {
 		return false
 	}
 
-	pluginDir := filepath.Join(extDir, "openclaw-web-search")
+	pluginDir := filepath.Join(home, ".openclaw", "extensions", "openclaw-web-search")
 	if _, err := os.Stat(filepath.Join(pluginDir, "index.ts")); err == nil {
 		return true // already installed
 	}
@@ -706,30 +706,6 @@ func registerWebSearchPlugin() {
 	_ = os.WriteFile(configPath, out, 0o600)
 }
 
-// openclawExtensionsDir resolves the extensions directory inside the openclaw
-// npm package. Returns "" if the binary or path cannot be resolved.
-func openclawExtensionsDir() string {
-	bin, err := exec.LookPath("openclaw")
-	if err != nil {
-		bin, err = exec.LookPath("clawdbot")
-		if err != nil {
-			return ""
-		}
-	}
-	binPath, err := filepath.EvalSymlinks(bin)
-	if err != nil {
-		return ""
-	}
-	// The binary symlink resolves to <pkg>/openclaw.mjs (package root).
-	// Extensions live at <pkg>/extensions/.
-	pkgDir := filepath.Dir(binPath)
-	extDir := filepath.Join(pkgDir, "extensions")
-	if info, err := os.Stat(extDir); err == nil && info.IsDir() {
-		return extDir
-	}
-	return ""
-}
-
 // openclawModelConfig builds an OpenClaw model config entry with capability detection.
 // The second return value indicates whether the model is a cloud (remote) model.
 func openclawModelConfig(ctx context.Context, client *api.Client, modelID string) (map[string]any, bool) {
Repository: huggingface/transformers
Pull request: fix(camembert): add tie_word_embeddings=True to CamembertConfig

## What does this PR do?

Fixes a v5 regression where `CamembertForMaskedLM` (and all CamemBERT masked-LM tasks) produces near-zero, near-uniform logits, making the model completely non-functional.

### Root cause

In v5, `modeling_utils.get_expanded_tied_weights_keys()` gates all weight tying on `config.tie_word_embeddings`:

```python
tie_word_embeddings = getattr(self.config, "tie_word_embeddings", False)
if not tie_word_embeddings:
    return {}   # <-- skips ALL tying when attribute is missing
```

`CamembertConfig` was missing `tie_word_embeddings: bool = True`, so the method returned `{}` and `lm_head.decoder.weight` was randomly initialized instead of being tied to `roberta.embeddings.word_embeddings.weight`.

Sibling configs `RobertaConfig` and `BertConfig` already declare `tie_word_embeddings: bool = True`. CamemBERT is RoBERTa-based and its modeling code already defines `_tied_weights_keys` mapping `lm_head.decoder.weight → roberta.embeddings.word_embeddings.weight` — but that mapping was silently ignored.

### Before fix (transformers v5.3.0)

```python
>>> pipeline("fill-mask", model="camembert-base")("Le camembert est un délicieux fromage <mask>.")
# score=0.000108  totalité    ← near-uniform logits (broken)
# score=0.000106  Mat
# score=0.000104  Populaire
```

The LOAD REPORT also showed `lm_head.decoder.weight: MISSING` (randomly initialized).

### After fix

```python
>>> pipeline("fill-mask", model="camembert-base")("Le camembert est un délicieux fromage <mask>.")
# score=0.1819  suisse    ← matches v4 exactly ✅
# score=0.0937  français
# score=0.0495  italien
```

### Change

One line added to `CamembertConfig`:

```python
tie_word_embeddings: bool = True
```

Fixes #44671

## Before submitting

- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#create-a-pull-request)?
- [x] Was this discussed/approved via a Github issue? #44671
- [ ] Did you write any new necessary tests?

## Who can review?

@ArthurZucker @Cyrilvallez


Changed files:
filename: src/transformers/models/camembert/configuration_camembert.py
patch: @@ -60,6 +60,7 @@ class CamembertConfig(PreTrainedConfig):
     classifier_dropout: float | int | None = None
     is_decoder: bool = False
     add_cross_attention: bool = False
+    tie_word_embeddings: bool = True
 
 
 __all__ = ["CamembertConfig"]
Repository: vercel/next.js
Pull request: Unflake two `"use cache"` tests

[Flakiness metric](https://app.datadoghq.com/ci/test/runs?query=test_level%3Atest%20%40git.repository.id%3A%22github.com%2Fvercel%2Fnext.js%22%20%40test.name%3A%28%22use-cache%20should%20cache%20results%20for%20cached%20functions%20imported%20from%20client%20components%22%20OR%20%22use-cache%20should%20cache%20results%20for%20cached%20functions%20passed%20to%20client%20components%22%29%20%40test.status%3A%22fail%22%20%40duration%3A%3E%3D1ns&agg_m=count&agg_m_source=base&agg_t=count&citest_explorer_sort=timestamp%2Casc&cols=%40test.status%2Ctimestamp%2C%40test.suite%2C%40test.name%2C%40duration%2C%40test.service%2C%40git.branch&currentTab=overview&eventStack=&fromUser=false&index=citest&start=1772476060657&end=1773772060657&paused=false)

I'm not sure why these tests recently got much more flaky (they were somewhat flaky before), but they definitely were missing `retry` blocks around the assertions after clicking the reset button.

Changed files:
filename: test/e2e/app-dir/use-cache/use-cache.test.ts
patch: @@ -188,7 +188,9 @@ describe('use-cache', () => {
     })
 
     await browser.elementById('reset-button').click()
-    expect(await browser.elementByCss('p').text()).toBe('0 0 0')
+    await retry(async () => {
+      expect(await browser.elementByCss('p').text()).toBe('0 0 0')
+    })
 
     await browser.elementById('submit-button').click()
 
@@ -210,7 +212,9 @@ describe('use-cache', () => {
     })
 
     await browser.elementById('reset-button').click()
-    expect(await browser.elementByCss('p').text()).toBe('0 0 0')
+    await retry(async () => {
+      expect(await browser.elementByCss('p').text()).toBe('0 0 0')
+    })
 
     await browser.elementById('submit-button').click()