#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T fetch() {
  T ret;
  cin >> ret;
  return ret;
}
template <typename T>
inline vector<T> fetch_vec(long long sz) {
  vector<T> ret(sz);
  for (auto& it : ret) cin >> it;
  return ret;
}
template <typename T>
inline void makeUnique(vector<T>& v) {
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
}
void file() {}
const long long N = 1e2 + 5;
char G[N][N];
long long dx[4] = {0, 0, 1, -1};
long long dy[4] = {1, -1, 0, 0};
long long vis[N][N];
long long sum1 = 0, sum2 = 0;
long long n, m;
void dfs(long long x, long long y) {
  vis[x][y] = true;
  if (G[x][y] == 'G') sum1++;
  if (G[x][y] == 'B') sum2++;
  if (G[x][y] == '#') return;
  for (long long i = 0; i < 4; i++) {
    long long tx = x + dx[i];
    long long ty = y + dy[i];
    if (tx >= 1 && tx <= n && ty >= 1 && ty <= m && !vis[tx][ty]) dfs(tx, ty);
  }
}
signed main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  ;
  file();
  long long t;
  cin >> t;
  while (t--) {
    cin >> n >> m;
    memset(G, 0, sizeof(G));
    ;
    for (long long i = 1; i <= n; i++) cin >> G[i] + 1;
    memset(vis, 0, sizeof(vis));
    ;
    long long sum = 0;
    sum1 = sum2 = 0;
    for (long long i = 1; i <= n; i++) {
      for (long long j = 1; j <= m; j++) {
        if (G[i][j] == 'G') sum++;
        if (G[i][j] != 'B') continue;
        for (long long k = 0; k < 4; k++) {
          long long tx = i + dx[k], ty = j + dy[k];
          if (G[tx][ty] == '.') G[tx][ty] = '#';
        }
      }
    }
    dfs(n, m);
    if (sum == sum1 && sum2 == 0)
      cout << "Yes"
           << "\n";
    else
      cout << "No"
           << "\n";
  }
  return 0;
}
