#include <bits/stdc++.h>
using namespace std;
long long int power(long long int x, long long int y) {
  if (y == 0)
    return 1;
  else if (y % 2 == 0)
    return power(x, y / 2) * power(x, y / 2);
  else
    return x * power(x, y / 2) * power(x, y / 2);
}
char a[200][200];
char vis[200][200];
char val[200][200];
void sol(long long int n, long long int m, long long int i, long long int j) {
  val[i][j] = 1;
  if (i > 0 && (a[i - 1][j] == 'G' || a[i - 1][j] == '.')) {
    if (vis[i - 1][j] == 0 && val[i - 1][j] == 0) {
      val[i - 1][j] = 1;
      vis[i - 1][j] = 1;
      sol(n, m, i - 1, j);
      vis[i - 1][j] = 0;
    }
  }
  if (j > 0 && (a[i][j - 1] == 'G' || a[i][j - 1] == '.')) {
    if (vis[i][j - 1] == 0 && val[i][j - 1] == 0) {
      val[i][j - 1] = 1;
      vis[i][j - 1] = 1;
      sol(n, m, i, j - 1);
      vis[i][j - 1] = 0;
    }
  }
  if (i + 1 < n && (a[i + 1][j] == 'G' || a[i + 1][j] == '.')) {
    if (vis[i + 1][j] == 0 && val[i + 1][j] == 0) {
      val[i + 1][j] = 1;
      vis[i + 1][j] = 1;
      sol(n, m, i + 1, j);
      vis[i + 1][j] = 0;
    }
  }
  if (j + 1 < m && (a[i][j + 1] == 'G' || a[i][j + 1] == '.')) {
    if (vis[i][j + 1] == 0 && val[i][j + 1] == 0) {
      val[i][j + 1] = 1;
      vis[i][j + 1] = 1;
      sol(n, m, i, j + 1);
      vis[i][j + 1] = 0;
    }
  }
}
void dfs(long long int n, long long int m) {
  long long int i, j;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      vis[i][j] = 0;
      val[i][j] = 0;
    }
  }
  if (a[n - 1][m - 1] == '#' || a[n - 1][m - 1] == 'B') return;
  sol(n, m, n - 1, m - 1);
}
int main() {
  long long int t, n, m, i, j;
  cin >> t;
  while (t--) {
    cin >> n >> m;
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        cin >> a[i][j];
      }
    }
    long long int ans = 1;
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        if (a[i][j] == 'B') {
          if (a[i][j + 1] == '.' && j + 1 < m) {
            a[i][j + 1] = '#';
          } else if (a[i][j + 1] == 'G' && j + 1 < m) {
            ans = 0;
            break;
          }
          if (a[i + 1][j] == '.' && i + 1 < n) {
            a[i + 1][j] = '#';
          } else if (a[i + 1][j] == 'G' && i + 1 < n) {
            ans = 0;
            break;
          }
          if (a[i - 1][j] == '.' && i > 0) {
            a[i - 1][j] = '#';
          } else if (a[i - 1][j] == 'G' && i > 0) {
            ans = 0;
            break;
          }
          if (a[i][j - 1] == '.' && j > 0) {
            a[i][j - 1] = '#';
          } else if (a[i][j - 1] == 'G' && j > 0) {
            ans = 0;
            break;
          }
        }
        if (!ans) break;
      }
      if (!ans) break;
    }
    if (!ans) {
      cout << "No\n";
      continue;
    }
    dfs(n, m);
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        if (a[i][j] == 'G' && val[i][j] != 1) {
          ans = 0;
          break;
        }
      }
      if (!ans) break;
    }
    if (ans)
      cout << "Yes\n";
    else
      cout << "No\n";
  }
}
