Permutation test for two distributions with the same mean but unequal variance I am using the coin package in R.  For two distributions with the same mean but different variance, the test is unable to reject the null hypothesis that the two distributions are the same.
numSamples <- 100
numSimulations <- 100000
df1 <- data.frame(y=rnorm(numSamples, mean=0), label='A')
df2 <- data.frame(y=rnorm(numSamples, mean=0, sd=10), label='B')
df <- rbind(df1, df2)

kruskal_test(y ~ as.factor(label), 
             distribution=approximate(B=numSimulations-1),
             data=df)

    Approximative Kruskal-Wallis Test

data:  y by as.factor(label) (A, B)
chi-squared = 0.82617, p-value = 0.3658

I tried both the Fisher-Pitman oneway_test() and the Kruskal-Wallis test kruskal_test().
Are there non-parametric tests that can tell whether two sets of data have the same variance or not?
 A: Both oneway_test() and kruskal_test() are tests for differences in the mean in $k$ samples (with $k$ potentially $> 2$). The former corresponds to a parametric ANOVA whereas the latter is a rank-based test (also of ANOVA-type).
For assessing differences in scale/variance, various other choices of tests are available: both classical and rank-based. Two prominent examples are the Mood test and the Ansari-Bradley test which are easily available with convenience interfaces in coin. And these lead to clearly significant results:
mood_test(y ~ as.factor(label),
  distribution = approximate(B = numSimulations - 1), data = df)
##  Approximative Two-Sample Mood Test
## 
## data:  y by as.factor(label) (A, B)
## Z = -10.649, p-value < 2.2e-16
## alternative hypothesis: true ratio of scales is not equal to 1
ansari_test(y ~ as.factor(label),
  distribution = approximate(B = numSimulations - 1), data = df)
##  Approximative Two-Sample Ansari-Bradley Test
## 
## data:  y by as.factor(label) (A, B)
## Z = 10.702, p-value < 2.2e-16
## alternative hypothesis: true ratio of scales is not equal to 1

But in coin there are also further tests for scale differences and you can easily set up new custom tests on the fly. See the four coin package vignettes for more details, e.g., starting with vignette("coin", package = "coin").
